aboutsummaryrefslogtreecommitdiff
path: root/src/test/resources/blackboxes/ParameterizedExtModuleTester.fir
diff options
context:
space:
mode:
authorjackkoenig2016-09-22 19:10:40 -0700
committerJack Koenig2016-10-26 15:15:37 -0700
commit4b8a0d2af52ceeb3ff5d05082af53bac76744361 (patch)
tree3c416fe2532c504cff18efc8b6d0dccab207802a /src/test/resources/blackboxes/ParameterizedExtModuleTester.fir
parente25c6f7a5e4e1bfbfcb8345288be478caa469525 (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/blackboxes/ParameterizedExtModuleTester.fir')
-rw-r--r--src/test/resources/blackboxes/ParameterizedExtModuleTester.fir40
1 files changed, 40 insertions, 0 deletions
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)
+