Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Design Compiler black box and parameter

Status
Not open for further replies.

blindscience

Newbie level 4
Joined
Apr 10, 2019
Messages
7
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
65
I have a parameterized Verilog module foo that I would like to black box during DC synthesis and be able to plug in a simulation-only module later on. Essentially, whenever I've instantiated foo in my design, I would like DC to pass these instantiations (with parameters) through to the mapped Verilog.

I have read multiple techniques for black boxing logic in DC, including a) defining a port-only version of the module in Verilog and b) using
"set_app_var hdlin_sv_interface_only_modules {modulename}" to remove the internals of the module when the definition is pulled in. I have used both of these techniques with the same undesired result.

Specifically, I am running into two problems:
1) After compilation, the generated mapped.v file includes module definitions for instantiations of foo, such as below. This would indicate that DC is not correctly considering foo as a black box:

Code:
module fooInstanceParamValue1ParamValue2ParamValue3(
   input porta;
   input portb;
   output portc;
)
endmodule

2) As a related issue, I can't just delete the empty module definitions and plug in my simulation model because, as show above, the parameters to the module have been removed and everything has been elaborated into a specific instance with a custom name.

What am I doing wrong?

Thanks!
 

I have found a partial solution to my problem. It looks like the
"set_app_var hdlin_sv_blackbox_modules {moduleNames}" command marks a module such that DC no longer includes an empty module definition (problem #1 above).

However, DC still removes the parameters (problem #2 above), now instantiating a bare module as below. In some sense, this is even worse than above since the parameter values are totally gone - I can't write a script to convert the custom instance names back into parameters:

Code:
foo fooInstance 
(.portA(wireA[wireWidthA:0]), 
.portB(wireB[wireWidthB:0])
);
--- Updated ---

I should mention, according to the 2019.09 documentation for DC, the hdlin_sv_blackbox_modules method (which mostly works as expected) is apparently legacy syntax. The preferred method is using the hdlin_sv_interface_only_modules method (which, as far as I can tell, does not work at all).
 
Last edited:

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top