Closed olerichter closed 1 year ago
1-4 are quite straightforward; do you want me to take care of it? For 1-2, I would use -m for ("mangle output"). It's too bad that the Verilog syntax for quoting names isn't supported.
For 3, we could add an option to generate this version v/s the current output format. -f for fuse signal flags?
For 4, we can add a config option that specifies a string prefix for globals (which is currently "top."), so that it can be set to whatever is needed for a specific simulator. How about verilog_global_prefix?
If you have time for it that would be obviously amazing, otherwise I will do it after we send the chip off 1.5 weeks and use it to learn more about the code base (we have working regex workarounds so its not urged, our system sims are running fine). for 3 we actually realized an additional problem that the AMS runner has (we have a running workaround for that too): if you have
output signal1;
reg signal1;
CELL instance_cell (.y(signal1));
the register directive needs to be removed, because it does not accept registers in wire like situations where they are constantly driven.
output signal1;
CELL instance_cell (.y(signal1));
for our work around we replace all reg
that are not outputs with wire
, and for output we just remove the line.
but i am not sure if that has any regression problems, or defining it as reg is actually obsolete and other simulators are just ok with driving a reg constantly
This is interesting... I believe I generate a reg for signals that are driven. I can make this another command-line option, and make it the default if we don't find any issues over time.
Just added -f (fuse directives) and -m (mangle names) options. Also, you can now specify an ACT config file option (act.global_signal_prefix) to change the global signal behavior. The default value is "top."
@rmanohar I will implement it but i wanted to get your ok/opinion first. also any wishes for the char that i use as flag?
Describe the bug cadence xelium/spectre and for some parts innovus does not understand or creates problems using the verilog from act2v:
needs to be
globals.<signalname>
it does not understandtop.<signalname>
options for later
if its a uniform nested array signal like
blub.d[].d[].blub
resort them into a one dimensional with the and change to name toblub.d[dimA].d[dimB].blub [dimA*dimB]
and do the mapping simply lowest level as least significantWork around