RTimothyEdwards / magic

Magic VLSI Layout Tool
Other
498 stars 103 forks source link

defRead.c does not support multiple +FIXED/+ROUTED etc segments per special net #264

Closed chaufe closed 1 year ago

chaufe commented 1 year ago

Currently, defRead.c does support multiple + FIXED / + ROUTED etc segments for regular nets, but it does not for special nets.

VERSION 5.8 ;
DIVIDERCHAR "/" ;
BUSBITCHARS "[]" ;
DESIGN testcase ;
UNIT DISTANCE MICRONS 2000 ;
DIEAREA ( 0 0 ) ( 100000 100000 ) ;
NETS 1 ;
- VDD + USE POWER
  + ROUTED Metal4 ( 0 11000 ) ( 100000 * )
  + ROUTED Metal5 ( 0 15000 ) ( 100000 * )
  ;
END NETS

SPECIALNETS 1 ;
- VSS + USE GROUND
  + ROUTED Metal4 1000 ( 0 21000 ) ( 100000 * )
  + ROUTED Metal5 1000 ( 0 25000 ) ( 100000 * )
  ;
END SPECIALNETS
END DESIGN

In this testcase, the NETS section is read in without error, whereas the SPECIALNETS section will trigger these errors:

DEF read, Line 17 (Message): Unknown keyword "ROUTED" in SPECIALNET definition; ignoring.
DEF read, Line 19 (Error): Via name "END" unknown in route.
DEF read, Line 19 (Error): Via name "SPECIALNETS" unknown in route.
DEF read, Line 20 (Error): Via name "END" unknown in route.
DEF read, Line 20 (Error): Via name "DESIGN" unknown in route.

/cc @proppy /cc @dhaentz1

RTimothyEdwards commented 1 year ago

@chaufe : I'll investigate this (not sure why the behavior is different; the same code parses regular and special nets).

RTimothyEdwards commented 1 year ago

Fixed in magic version 8.3.425.

chaufe commented 1 year ago

Thanks for the quick fix - tested to be working using magic version 8.3.425.