Difference between revisions of "Top level module with interface ports"
From Verific Design Automation FAQ
(Created page with "'''Q: How to elaborate top-level module with interface ports.''' When I elaborate a top-level module with interface ports, Verific issues a warning message and stops the elab...") |
|||
Line 16: | Line 16: | ||
* tcl: | * tcl: | ||
set_runtime_flag "veri_elaborate_top_level_modules_having_interface_ports" 1 | set_runtime_flag "veri_elaborate_top_level_modules_having_interface_ports" 1 | ||
+ | |||
+ | [hoa@awing6 181228]$ cat test.sv | ||
+ | interface myinterface() ; | ||
+ | logic foo, bar; | ||
+ | endinterface | ||
+ | |||
+ | module top(myinterface I[1:0][1:0], input ii[0:1], output oo[1:0]); | ||
+ | assign I[1][1].foo = ii[0] ; | ||
+ | assign I[0][0].foo = ii[1] ; | ||
+ | assign oo[1] = I[1][1].foo ; | ||
+ | assign oo[0] = I[0][0].foo ; | ||
+ | endmodule | ||
+ | [hoa@awing6 181228]$ verific-linux | ||
+ | -- (c) Copyright 1999 - 2018 Verific Design Automation Inc. All rights reserved | ||
+ | % analyze -sysv test.sv | ||
+ | -- Analyzing Verilog file 'test.sv' (VERI-1482) | ||
+ | % elaborate | ||
+ | '''test.sv(10): WARNING: module 'top' having interface port(s) (I) cannot be elaborated by itself (VERI-1554)''' | ||
+ | % cleanup -all -static | ||
+ | INFO: All parse-trees and netlists were deleted (CMD-2055) | ||
+ | % analyze -sysv test.sv | ||
+ | -- Analyzing Verilog file 'test.sv' (VERI-1482) | ||
+ | % '''set_runtime_flag "veri_elaborate_top_level_modules_having_interface_ports" 1''' | ||
+ | INFO: value of runtime flag 'veri_elaborate_top_level_modules_having_interface_ports' is 1 (CMD-2076) | ||
+ | % elaborate | ||
+ | test.sv(5): INFO: compiling module 'top' (VERI-1018) | ||
+ | % exit | ||
+ | [hoa@awing6 181228]$ |
Latest revision as of 16:41, 28 December 2018
Q: How to elaborate top-level module with interface ports.
When I elaborate a top-level module with interface ports, Verific issues a warning message and stops the elaboration:
test.sv(10): WARNING: module 'top' having interface port(s) (I) cannot be elaborated by itself (VERI-1554)
How do I elaborate such modules?
Verilog LRM does not allow (elaboration of) top level modules with interface ports. Interface ports need actual interface instance connected to them to elaborate the design.
However, Verific has a runtime flag "veri_elaborate_top_level_modules_having_interface_ports" which when set will elaborate such designs assuming the default interface.
- C++:
RuntimeFlags::SetVar("veri_elaborate_top_level_modules_having_interface_ports", 1) ;
- tcl:
set_runtime_flag "veri_elaborate_top_level_modules_having_interface_ports" 1
[hoa@awing6 181228]$ cat test.sv interface myinterface() ; logic foo, bar; endinterface module top(myinterface I[1:0][1:0], input ii[0:1], output oo[1:0]); assign I[1][1].foo = ii[0] ; assign I[0][0].foo = ii[1] ; assign oo[1] = I[1][1].foo ; assign oo[0] = I[0][0].foo ; endmodule [hoa@awing6 181228]$ verific-linux -- (c) Copyright 1999 - 2018 Verific Design Automation Inc. All rights reserved % analyze -sysv test.sv -- Analyzing Verilog file 'test.sv' (VERI-1482) % elaborate test.sv(10): WARNING: module 'top' having interface port(s) (I) cannot be elaborated by itself (VERI-1554) % cleanup -all -static INFO: All parse-trees and netlists were deleted (CMD-2055) % analyze -sysv test.sv -- Analyzing Verilog file 'test.sv' (VERI-1482) % set_runtime_flag "veri_elaborate_top_level_modules_having_interface_ports" 1 INFO: value of runtime flag 'veri_elaborate_top_level_modules_having_interface_ports' is 1 (CMD-2076) % elaborate test.sv(5): INFO: compiling module 'top' (VERI-1018) % exit [hoa@awing6 181228]$