In Anabatic, check if there is at least one METAL1 in singleGCell().

* Bug: In Anabatic::singleGCell(), in some analogic design, there may be
    not a single METAL1 in the GCell. Issue a clean warning instead of
    going ashtray.
* Change: In CRL.etc/technology.cong & CRL.etc/display.conf, add a "metbot_r"
    as a real layer when "metbot" symbolic layer is distinct from a normal
    metal.
This commit is contained in:
Jean-Paul Chaput 2016-12-15 19:25:05 +01:00
parent bdc474d7fc
commit 4163fc044a
3 changed files with 19 additions and 13 deletions

View File

@ -2147,6 +2147,12 @@ namespace {
return;
}
if (rpM1s.empty()) {
cerr << Error( "No METAL1 in Single GCell for Net \"%s\".", getString(net->getName()).c_str() ) << endl;
cdebug_tabw(145,-1);
return;
}
sort( rpM1s.begin(), rpM1s.end(), SortRpByX(NoFlags) ); // increasing X.
GCell* gcell1 = anbt->getGCellUnder( (*rpM1s.begin ())->getCenter() );

View File

@ -63,10 +63,10 @@ stylesTable = \
# Group: MIM6.
, (Group , 'MIM6')
#, (Drawing, 'topmim6', { 'color':'Blue' , 'pattern':'poids2.8' , 'threshold':0.80*scale })
, (Drawing, 'metbot' , { 'color':'Aqua' , 'pattern':'light_antihash0.8', 'threshold':0.80*scale })
, (Drawing, 'cut6' , { 'color':'LightPink', 'pattern':'light_antihash1.8', 'threshold':0.80*scale })
, (Drawing, 'metal7' , { 'color':'Green' , 'pattern':'light_antihash2.8', 'threshold':0.80*scale })
#, (Drawing, 'topmim6' , { 'color':'Blue' , 'pattern':'poids2.8' , 'threshold':0.80*scale })
, (Drawing, 'metbot_r', { 'color':'Aqua' , 'pattern':'light_antihash0.8', 'threshold':0.80*scale })
, (Drawing, 'cut6' , { 'color':'LightPink', 'pattern':'light_antihash1.8', 'threshold':0.80*scale })
, (Drawing, 'metal7' , { 'color':'Green' , 'pattern':'light_antihash2.8', 'threshold':0.80*scale })
# Group: Blockages.
, (Group , 'Blockages')
@ -168,10 +168,10 @@ stylesTable = \
# MIM6.
, (Group , 'MIM6')
#, (Drawing, 'topmim6', { 'color':'Blue' , 'pattern':'poids2.32' , 'threshold':0.80*scale })
, (Drawing, 'metbot' , { 'color':'Aqua' , 'pattern':'light_antihash0.8' , 'threshold':0.80*scale })
#, (Drawing, 'padopen', { 'color':'LightPink', 'pattern':'light_antihash1.8' , 'threshold':0.80*scale })
, (Drawing, 'metal7' , { 'color':'Green' , 'pattern':'light_antihash2.8' , 'threshold':0.80*scale })
#, (Drawing, 'topmim6' , { 'color':'Blue' , 'pattern':'poids2.32' , 'threshold':0.80*scale })
, (Drawing, 'metbot_r', { 'color':'Aqua' , 'pattern':'light_antihash0.8' , 'threshold':0.80*scale })
#, (Drawing, 'padopen' , { 'color':'LightPink', 'pattern':'light_antihash1.8' , 'threshold':0.80*scale })
, (Drawing, 'metal7' , { 'color':'Green' , 'pattern':'light_antihash2.8' , 'threshold':0.80*scale })
# Blockages.
, (Group , 'Blockages')
@ -344,10 +344,10 @@ stylesTable = \
# Group: MIM6.
, (Group , 'MIM6')
#, (Drawing, 'topmim6', { 'color':'Blue' , 'pattern':'poids2.8' , 'threshold':0.80*scale })
, (Drawing, 'metbot' , { 'color':'Aqua' , 'pattern':'light_antihash0.8', 'threshold':0.80*scale })
, (Drawing, 'cut6' , { 'color':'LightPink', 'pattern':'light_antihash1.8', 'threshold':0.80*scale })
, (Drawing, 'metal7' , { 'color':'Green' , 'pattern':'light_antihash2.8', 'threshold':0.80*scale })
#, (Drawing, 'topmim6' , { 'color':'Blue' , 'pattern':'poids2.8' , 'threshold':0.80*scale })
, (Drawing, 'metbot_r', { 'color':'Aqua' , 'pattern':'light_antihash0.8', 'threshold':0.80*scale })
, (Drawing, 'cut6' , { 'color':'LightPink', 'pattern':'light_antihash1.8', 'threshold':0.80*scale })
, (Drawing, 'metal7' , { 'color':'Green' , 'pattern':'light_antihash2.8', 'threshold':0.80*scale })
# Group: Blockages.
, (Group , 'Blockages')

View File

@ -54,7 +54,7 @@ realLayersTable = \
, ('cut7' , BasicLayer.Material.cut )
, ('metal8' , BasicLayer.Material.metal )
#, ('topmim6' , BasicLayer.Material.other ) # For Capacitances & Pads.
#, ('metbot' , BasicLayer.Material.other )
, ('metbot_r' , BasicLayer.Material.other )
#, ('padopen' , BasicLayer.Material.other )
#, ('alucap' , BasicLayer.Material.other )