diff options
| author | jackkoenig | 2016-09-22 19:10:40 -0700 |
|---|---|---|
| committer | Jack Koenig | 2016-10-26 15:15:37 -0700 |
| commit | 4b8a0d2af52ceeb3ff5d05082af53bac76744361 (patch) | |
| tree | 3c416fe2532c504cff18efc8b6d0dccab207802a /src/test/resources | |
| parent | e25c6f7a5e4e1bfbfcb8345288be478caa469525 (diff) | |
Add Support for Parameterized ExtModules and Name Override
Adds support for Integer, Double/Real, and String parameters in external
modules. Also add name field to extmodules so that emitted name can be
different from Firrtl name. This is important because parameterized extmodules
will frequently have differing IO even though they need to be emitted as
instantiating the same Verilog module.
Diffstat (limited to 'src/test/resources')
3 files changed, 77 insertions, 0 deletions
diff --git a/src/test/resources/blackboxes/ParameterizedExtModule.v b/src/test/resources/blackboxes/ParameterizedExtModule.v new file mode 100644 index 00000000..ee6e3ec3 --- /dev/null +++ b/src/test/resources/blackboxes/ParameterizedExtModule.v @@ -0,0 +1,15 @@ + +module ParameterizedExtModule( + input [15:0] foo, + output [15:0] bar +); + parameter VALUE = 0; + parameter STRING = "one"; + parameter REAL = 1.0; + wire [15:0] fizz; + wire [15:0] buzz; + assign bar = foo + VALUE + fizz + buzz; + assign fizz = (STRING == "two")? 2 : (STRING == "one")? 1 : 0; + assign buzz = (REAL > 2.5E50)? 2 : (REAL < 0.0)? 1 : 0; +endmodule + diff --git a/src/test/resources/blackboxes/ParameterizedExtModuleTester.fir b/src/test/resources/blackboxes/ParameterizedExtModuleTester.fir new file mode 100644 index 00000000..29769e84 --- /dev/null +++ b/src/test/resources/blackboxes/ParameterizedExtModuleTester.fir @@ -0,0 +1,40 @@ +circuit ParameterizedExtModuleTester : + extmodule ParameterizedExtModule_1 : + input foo : UInt<16> + output bar : UInt<16> + + defname = ParameterizedExtModule + parameter VALUE = 1 + parameter STRING = "one" + parameter REAL = -1.7 + + extmodule ParameterizedExtModule_2 : + input foo : UInt<16> + output bar : UInt<16> + + defname = ParameterizedExtModule + parameter VALUE = 2 + parameter STRING = "two" + parameter REAL = 2.6E50 + + module ParameterizedExtModuleTester : + input clk : Clock + input reset : UInt<1> + + inst dut1 of ParameterizedExtModule_1 + inst dut2 of ParameterizedExtModule_2 + + dut1.foo <= UInt(1000) + dut2.foo <= UInt(1000) + + when not(reset) : + when neq(dut1.bar, UInt(1003)) : + printf(clk, not(reset), "Assertion failed\nTest Failed!\n") + stop(clk, not(reset), 1) + else : + when neq(dut2.bar, UInt(1006)) : + printf(clk, not(reset), "Assertion failed\nTest Failed!\n") + stop(clk, not(reset), 1) + else : + stop(clk, not(reset), 0) + diff --git a/src/test/resources/blackboxes/RenamedExtModuleTester.fir b/src/test/resources/blackboxes/RenamedExtModuleTester.fir new file mode 100644 index 00000000..48b0886c --- /dev/null +++ b/src/test/resources/blackboxes/RenamedExtModuleTester.fir @@ -0,0 +1,22 @@ +circuit RenamedExtModuleTester : + extmodule ThisIsJustTheFirrtlName : + input foo : UInt<16> + output bar : UInt<16> + + defname = SimpleExtModule + + module RenamedExtModuleTester : + input clk : Clock + input reset : UInt<1> + + inst dut of ThisIsJustTheFirrtlName + + dut.foo <= UInt(1234) + + when not(reset) : + when neq(dut.bar, UInt(1234)) : + printf(clk, not(reset), "Assertion failed\nTest Failed!\n") + stop(clk, not(reset), 1) + else : + stop(clk, not(reset), 0) + |
