| @ -0,0 +1,30 @@ | |||||
| SYMBI_SRC_FILE := /opt/symbiotic.sh | |||||
| TASKS := flag_check | |||||
| .PHONY: all | |||||
| all: flag_check | |||||
| define taskTemplate | |||||
| .PHONY: $(1) | |||||
| $(1): | |||||
| source $(SYMBI_SRC_FILE); sby -f symbiyosys.sby $(1) | |||||
| endef | |||||
| $(foreach task, $(TASKS), $(eval $(call taskTemplate,$(task)))) | |||||
| wave: | |||||
| ifndef wf | |||||
| $(error please give wave parameter) | |||||
| endif | |||||
| gtkwave -a trace.gtkw $(wf) | |||||
| .PHONY: clean | |||||
| clean: | |||||
| rm -rf symbiyosys_* | |||||
| @ -0,0 +1,37 @@ | |||||
| module Properties ( | |||||
| // global | |||||
| input clk, | |||||
| input resetn, | |||||
| input [1:0] sel, | |||||
| input [3:0] we | |||||
| ); | |||||
| // Constrain reset | |||||
| reg init_flag = 1; | |||||
| always @(*) begin | |||||
| if (init_flag) assume (!resetn); | |||||
| if (!init_flag) assume (resetn); | |||||
| end | |||||
| always @(posedge clk) | |||||
| init_flag <= 0; | |||||
| default clocking | |||||
| @(posedge clk); | |||||
| endclocking | |||||
| default disable iff (!resetn); | |||||
| assert property (we[0] |=> sel == 0); | |||||
| endmodule | |||||
| bind TestDesign Properties i_Properties (.*); | |||||
| @ -0,0 +1,37 @@ | |||||
| library ieee; | |||||
| use ieee.std_logic_1164.all; | |||||
| use ieee.numeric_std.all; | |||||
| entity TestDesign is | |||||
| port ( | |||||
| clk : in std_logic; | |||||
| resetn : in std_logic; | |||||
| sel : in std_logic_vector(1 downto 0); | |||||
| we : out std_logic_vector(3 downto 0) | |||||
| ); | |||||
| end entity TestDesign; | |||||
| architecture rtl of TestDesign is | |||||
| begin | |||||
| process (CLK, RESETn) is | |||||
| begin | |||||
| if (RESETn = '0') then | |||||
| we <= (others => '0'); | |||||
| elsif (rising_edge(CLK)) then | |||||
| we(0) <= '0' when sel = "00" else '1'; | |||||
| we(1) <= '0' when sel = "01" else '1'; | |||||
| we(2) <= '0' when sel = "10" else '1'; | |||||
| we(3) <= '0' when sel = "11" else '1'; | |||||
| end if; | |||||
| end process; | |||||
| end architecture; | |||||
| @ -0,0 +1,20 @@ | |||||
| [tasks] | |||||
| flag_check | |||||
| [options] | |||||
| mode prove | |||||
| depth 30 | |||||
| [engines] | |||||
| abc pdr | |||||
| [script] | |||||
| verific -vhdl TestDesign.vhd | |||||
| verific -sv Properties.sv | |||||
| verific -import -extnets -all TestDesign | |||||
| prep -top TestDesign | |||||
| setundef -anyseq -undriven | |||||
| [files] | |||||
| Properties.sv | |||||
| TestDesign.vhd | |||||