Skip to content

Commit

Permalink
Merge 7cb5116 into 287e496
Browse files Browse the repository at this point in the history
  • Loading branch information
leonardt committed Feb 23, 2019
2 parents 287e496 + 7cb5116 commit 160a3e1
Show file tree
Hide file tree
Showing 10 changed files with 488 additions and 131 deletions.
3 changes: 2 additions & 1 deletion .travis.yml
Expand Up @@ -7,11 +7,12 @@ addons:
- ubuntu-toolchain-r-test
packages:
- g++-4.9
- verilator
before_install:
- source .travis/install_coreir.sh
install:
- pip install python-coveralls
- pip install pytest-cov pytest-pep8
- pip install pytest-cov pytest-codestyle fault
- pip install -r requirements.txt
- pip install -e .
after_success:
Expand Down
2 changes: 1 addition & 1 deletion README.md
Expand Up @@ -124,7 +124,7 @@ $ pip install -e .

Install testing infrastructure and run tests to validate the setup
```
$ pip install pytest # note that magma requires pytest version 3.3 or later
$ pip install pytest fault # note that magma requires pytest version 3.3 or later
$ pytest tests
```

Expand Down
6 changes: 4 additions & 2 deletions magma/syntax/sequential.py
Expand Up @@ -122,10 +122,11 @@ def gen_register_instances(initial_value_map):
"""
register_instances = ""
tab = " "
for name, (value, type_) in initial_value_map.items():
if isinstance(value, EscapedExpression):
orig = astor.to_source(value.orig.elts[0]).rstrip()
register_instances += f" {name} = {orig}\n"
register_instances += f"{tab}{name} = {orig}\n"
print(register_instances)
else:
# TODO: Only support m.bits(x, y) for now
Expand All @@ -138,7 +139,7 @@ def gen_register_instances(initial_value_map):
assert isinstance(value.args[1], ast.Num)
n = value.args[1].n
init = value.args[0].n
register_instances += f" {name} = Register({n}, init={init})\n"
register_instances += f"{tab}{name} = Register({n}, init={init})\n"
return register_instances


Expand All @@ -148,6 +149,7 @@ def gen_io_list(inputs, output_type):
type_ = astor.to_source(type_).rstrip()
io_list += f"\"{name}\", m.In({type_}), "
output_type = astor.to_source(output_type).rstrip()
io_list += f"\"CLK\", m.In(m.Clock), "
io_list += f"\"O\", m.Out({output_type})"
return io_list + "]"

Expand Down
55 changes: 55 additions & 0 deletions tests/test_syntax/gold/TestBasic.json
@@ -0,0 +1,55 @@
{"top":"global.TestBasic",
"namespaces":{
"global":{
"modules":{
"TestBasic":{
"type":["Record",[
["I",["Array",2,"BitIn"]],
["CLK",["Named","coreir.clkIn"]],
["O",["Array",2,"Bit"]]
]],
"instances":{
"TestBasic_comb_inst0":{
"modref":"global.TestBasic_comb"
},
"reg_P_inst0":{
"genref":"coreir.reg",
"genargs":{"width":["Int",2]},
"modargs":{"clk_posedge":["Bool",true], "init":[["BitVector",2],"2'h0"]}
},
"reg_P_inst1":{
"genref":"coreir.reg",
"genargs":{"width":["Int",2]},
"modargs":{"clk_posedge":["Bool",true], "init":[["BitVector",2],"2'h0"]}
}
},
"connections":[
["self.I","TestBasic_comb_inst0.I_0"],
["reg_P_inst0.in","TestBasic_comb_inst0.O0"],
["reg_P_inst1.in","TestBasic_comb_inst0.O1"],
["self.O","TestBasic_comb_inst0.O2"],
["reg_P_inst0.out","TestBasic_comb_inst0.self_x_0"],
["reg_P_inst1.out","TestBasic_comb_inst0.self_y_0"],
["self.CLK","reg_P_inst0.clk"],
["self.CLK","reg_P_inst1.clk"]
]
},
"TestBasic_comb":{
"type":["Record",[
["I_0",["Array",2,"BitIn"]],
["self_x_0",["Array",2,"BitIn"]],
["self_y_0",["Array",2,"BitIn"]],
["O0",["Array",2,"Bit"]],
["O1",["Array",2,"Bit"]],
["O2",["Array",2,"Bit"]]
]],
"connections":[
["self.O0","self.I_0"],
["self.self_x_0","self.O1"],
["self.self_y_0","self.O2"]
]
}
}
}
}
}
95 changes: 95 additions & 0 deletions tests/test_syntax/gold/TestBasic.v
@@ -0,0 +1,95 @@
module coreir_reg #(parameter clk_posedge=1, parameter init=1, parameter width=1) (
input clk,
input [width-1:0] in,
output [width-1:0] out
);
reg [width-1:0] outReg=init;
wire real_clk;
assign real_clk = clk_posedge ? clk : ~clk;
always @(posedge real_clk) begin
outReg <= in;
end
assign out = outReg;

endmodule // coreir_reg

module TestBasic_comb (
input [1:0] I_0,
output [1:0] O0,
output [1:0] O1,
output [1:0] O2,
input [1:0] self_x_0,
input [1:0] self_y_0
);


assign O0[1:0] = I_0[1:0];

assign O1[1:0] = self_x_0[1:0];

assign O2[1:0] = self_y_0[1:0];


endmodule // TestBasic_comb

module TestBasic (
input CLK,
input [1:0] I,
output [1:0] O
);


wire [1:0] TestBasic_comb_inst0__I_0;
wire [1:0] TestBasic_comb_inst0__O0;
wire [1:0] TestBasic_comb_inst0__O1;
wire [1:0] TestBasic_comb_inst0__O2;
wire [1:0] TestBasic_comb_inst0__self_x_0;
wire [1:0] TestBasic_comb_inst0__self_y_0;
TestBasic_comb TestBasic_comb_inst0(
.I_0(TestBasic_comb_inst0__I_0),
.O0(TestBasic_comb_inst0__O0),
.O1(TestBasic_comb_inst0__O1),
.O2(TestBasic_comb_inst0__O2),
.self_x_0(TestBasic_comb_inst0__self_x_0),
.self_y_0(TestBasic_comb_inst0__self_y_0)
);

// Instancing generated Module: coreir.reg(width:2)
wire reg_P_inst0__clk;
wire [1:0] reg_P_inst0__in;
wire [1:0] reg_P_inst0__out;
coreir_reg #(.clk_posedge(1),.init(2'h0),.width(2)) reg_P_inst0(
.clk(reg_P_inst0__clk),
.in(reg_P_inst0__in),
.out(reg_P_inst0__out)
);

// Instancing generated Module: coreir.reg(width:2)
wire reg_P_inst1__clk;
wire [1:0] reg_P_inst1__in;
wire [1:0] reg_P_inst1__out;
coreir_reg #(.clk_posedge(1),.init(2'h0),.width(2)) reg_P_inst1(
.clk(reg_P_inst1__clk),
.in(reg_P_inst1__in),
.out(reg_P_inst1__out)
);

assign TestBasic_comb_inst0__I_0[1:0] = I[1:0];

assign reg_P_inst0__in[1:0] = TestBasic_comb_inst0__O0[1:0];

assign reg_P_inst1__in[1:0] = TestBasic_comb_inst0__O1[1:0];

assign O[1:0] = TestBasic_comb_inst0__O2[1:0];

assign TestBasic_comb_inst0__self_x_0[1:0] = reg_P_inst0__out[1:0];

assign TestBasic_comb_inst0__self_y_0[1:0] = reg_P_inst1__out[1:0];

assign reg_P_inst0__clk = CLK;

assign reg_P_inst1__clk = CLK;


endmodule // TestBasic

@@ -1,41 +1,31 @@
{"top":"global.ShiftRegister",
{"top":"global.TestShiftRegister",
"namespaces":{
"global":{
"modules":{
"Register":{
"type":["Record",[
["I",["Array",2,"BitIn"]],
["CLK",["Named","coreir.clkIn"]],
["O",["Array",2,"Bit"]]
]],
"instances":{
"Register2_inst0":{
"modref":"global.Register2"
},
"Register_comb_inst0":{
"modref":"global.Register_comb"
},
"reg_P_inst0":{
"genref":"coreir.reg",
"genargs":{"width":["Int",2]},
"modargs":{"clk_posedge":["Bool",true], "init":[["BitVector",2],"2'h0"]}
}
},
"connections":[
["Register_comb_inst0.O0","Register2_inst0.I"],
["Register_comb_inst0.self_value_0","Register2_inst0.O"],
["self.I","Register_comb_inst0.I_0"],
["self.O","Register_comb_inst0.O1"]
["reg_P_inst0.in","Register_comb_inst0.O0"],
["self.O","Register_comb_inst0.O1"],
["reg_P_inst0.out","Register_comb_inst0.self_value_0"],
["self.CLK","reg_P_inst0.clk"]
]
},
"Register2":{
"type":["Record",[
["I",["Array",2,"BitIn"]],
["O",["Array",2,"Bit"]],
["CLK",["Named","coreir.clkIn"]]
]]
},
"Register2_0001":{
"type":["Record",[
["I",["Array",2,"BitIn"]],
["O",["Array",2,"Bit"]],
["CLK",["Named","coreir.clkIn"]]
]]
},
"Register_comb":{
"type":["Record",[
["I_0",["Array",2,"BitIn"]],
Expand All @@ -51,26 +41,31 @@
"Register_unq1":{
"type":["Record",[
["I",["Array",2,"BitIn"]],
["CLK",["Named","coreir.clkIn"]],
["O",["Array",2,"Bit"]]
]],
"instances":{
"Register2_0001_inst0":{
"modref":"global.Register2_0001"
},
"Register_comb_inst0":{
"modref":"global.Register_comb"
},
"reg_P_inst0":{
"genref":"coreir.reg",
"genargs":{"width":["Int",2]},
"modargs":{"clk_posedge":["Bool",true], "init":[["BitVector",2],"2'h1"]}
}
},
"connections":[
["Register_comb_inst0.O0","Register2_0001_inst0.I"],
["Register_comb_inst0.self_value_0","Register2_0001_inst0.O"],
["self.I","Register_comb_inst0.I_0"],
["self.O","Register_comb_inst0.O1"]
["reg_P_inst0.in","Register_comb_inst0.O0"],
["self.O","Register_comb_inst0.O1"],
["reg_P_inst0.out","Register_comb_inst0.self_value_0"],
["self.CLK","reg_P_inst0.clk"]
]
},
"ShiftRegister":{
"TestShiftRegister":{
"type":["Record",[
["I",["Array",2,"BitIn"]],
["CLK",["Named","coreir.clkIn"]],
["O",["Array",2,"Bit"]]
]],
"instances":{
Expand All @@ -80,20 +75,22 @@
"Register_inst1":{
"modref":"global.Register_unq1"
},
"ShiftRegister_comb_inst0":{
"modref":"global.ShiftRegister_comb"
"TestShiftRegister_comb_inst0":{
"modref":"global.TestShiftRegister_comb"
}
},
"connections":[
["ShiftRegister_comb_inst0.O0","Register_inst0.I"],
["ShiftRegister_comb_inst0.self_x_0","Register_inst0.O"],
["ShiftRegister_comb_inst0.O1","Register_inst1.I"],
["ShiftRegister_comb_inst0.self_y_0","Register_inst1.O"],
["self.I","ShiftRegister_comb_inst0.I_0"],
["self.O","ShiftRegister_comb_inst0.O2"]
["self.CLK","Register_inst0.CLK"],
["TestShiftRegister_comb_inst0.O0","Register_inst0.I"],
["TestShiftRegister_comb_inst0.self_x_0","Register_inst0.O"],
["self.CLK","Register_inst1.CLK"],
["TestShiftRegister_comb_inst0.O1","Register_inst1.I"],
["TestShiftRegister_comb_inst0.self_y_0","Register_inst1.O"],
["self.I","TestShiftRegister_comb_inst0.I_0"],
["self.O","TestShiftRegister_comb_inst0.O2"]
]
},
"ShiftRegister_comb":{
"TestShiftRegister_comb":{
"type":["Record",[
["I_0",["Array",2,"BitIn"]],
["self_x_0",["Array",2,"BitIn"]],
Expand Down

0 comments on commit 160a3e1

Please sign in to comment.