Update the vlog95 python tests to pass more options
This commit is contained in:
parent
385a0fb46a
commit
6651df6f2c
|
|
@ -0,0 +1,6 @@
|
||||||
|
time=0 a=x b=x
|
||||||
|
time=5000 a=0 b=x
|
||||||
|
time=5680 a=0 b=0
|
||||||
|
time=15000 a=1 b=0
|
||||||
|
time=15680 a=1 b=1
|
||||||
|
work/vlog95.v:25: $finish called at 25000 (1ps)
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
time=0 a=x b=x
|
||||||
|
time=5000 a=0 b=x
|
||||||
|
time=5110 a=0 b=0
|
||||||
|
time=15000 a=1 b=0
|
||||||
|
time=15330 a=1 b=1
|
||||||
|
work/vlog95.v:25: $finish called at 25000 (1ps)
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
time=0 a=x b=x c=x d=x
|
||||||
|
time=10000 a=0 b=0 c=0 d=x
|
||||||
|
time=10560 a=0 b=0 c=0 d=0
|
||||||
|
time=20000 a=1 b=0 c=0 d=0
|
||||||
|
time=20560 a=1 b=0 c=0 d=1
|
||||||
|
time=30000 a=0 b=1 c=0 d=1
|
||||||
|
time=30450 a=0 b=1 c=0 d=0
|
||||||
|
time=40000 a=1 b=1 c=0 d=0
|
||||||
|
time=40560 a=1 b=1 c=0 d=1
|
||||||
|
time=50000 a=0 b=0 c=1 d=1
|
||||||
|
time=50340 a=0 b=0 c=1 d=0
|
||||||
|
time=50450 a=0 b=0 c=1 d=1
|
||||||
|
time=50560 a=0 b=0 c=1 d=0
|
||||||
|
time=60000 a=1 b=0 c=1 d=0
|
||||||
|
time=60560 a=1 b=0 c=1 d=1
|
||||||
|
time=70000 a=0 b=1 c=1 d=1
|
||||||
|
time=70450 a=0 b=1 c=1 d=0
|
||||||
|
time=80000 a=1 b=1 c=1 d=0
|
||||||
|
time=80560 a=1 b=1 c=1 d=1
|
||||||
|
work/vlog95.v:55: $finish called at 90000 (1ps)
|
||||||
|
|
@ -230,6 +230,41 @@ def check_run_outputs(options: dict, it_stdout: str, log_list: list,
|
||||||
return [1, "Failed - No PASSED output, and no gold file."]
|
return [1, "Failed - No PASSED output, and no gold file."]
|
||||||
|
|
||||||
|
|
||||||
|
def options_to_pass(options: dict) -> list:
|
||||||
|
'''Options to pass to the translated compile stage.'''
|
||||||
|
rtn = []
|
||||||
|
if "-gspecify" in options['iverilog_args']:
|
||||||
|
rtn.append("-gspecify")
|
||||||
|
if "-ginterconnect" in options['iverilog_args']:
|
||||||
|
rtn.append("-ginterconnect")
|
||||||
|
if "-Tmin" in options['iverilog_args']:
|
||||||
|
rtn.append("-Tmin")
|
||||||
|
if "-Ttyp" in options['iverilog_args']:
|
||||||
|
rtn.append("-Ttyp")
|
||||||
|
if "-Tmax" in options['iverilog_args']:
|
||||||
|
rtn.append("-Tmax")
|
||||||
|
return rtn
|
||||||
|
|
||||||
|
def build_ivl_return(translation_fail: bool, res: subprocess.CompletedProcess) -> list:
|
||||||
|
'''Generate the return for the iverilog run.'''
|
||||||
|
if translation_fail:
|
||||||
|
if res.returncode != 0:
|
||||||
|
return [0, "Passed - TE."]
|
||||||
|
return [1, "Failed - TE did not fail."]
|
||||||
|
if res.returncode != 0:
|
||||||
|
return [1, "Failed - Compile failed."]
|
||||||
|
return[]
|
||||||
|
|
||||||
|
def build_vvp_return(expected_fail: bool, res: subprocess.CompletedProcess) -> list:
|
||||||
|
'''Generate the return for the vvp run.'''
|
||||||
|
if res.returncode != 0 and expected_fail:
|
||||||
|
return [0, "Passed - EF."]
|
||||||
|
if res.returncode >= 256:
|
||||||
|
return [1, "Failed - vvp execution error"]
|
||||||
|
if res.returncode > 0 and res.returncode < 256 and not expected_fail:
|
||||||
|
return [1, "Failed - vvp error, but expected to succeed"]
|
||||||
|
return []
|
||||||
|
|
||||||
def do_run_normal(options: dict, cfg: dict, expected_fail: bool,
|
def do_run_normal(options: dict, cfg: dict, expected_fail: bool,
|
||||||
translation_fail: bool) -> list:
|
translation_fail: bool) -> list:
|
||||||
'''Run the iverilog and vvp commands.
|
'''Run the iverilog and vvp commands.
|
||||||
|
|
@ -251,13 +286,12 @@ def do_run_normal(options: dict, cfg: dict, expected_fail: bool,
|
||||||
if ivl_tres.returncode != 0:
|
if ivl_tres.returncode != 0:
|
||||||
return [1, "Failed - vlog95 translation failed."]
|
return [1, "Failed - vlog95 translation failed."]
|
||||||
|
|
||||||
enable_specify = "-gspecify" in options['iverilog_args']
|
saved_options = options_to_pass(options)
|
||||||
if "-pallowsigned=1" in options['iverilog_args']:
|
if "-pallowsigned=1" in options['iverilog_args']:
|
||||||
options['iverilog_args'] = [ "-g2001-noconfig" ]
|
options['iverilog_args'] = [ "-g2001-noconfig" ]
|
||||||
else:
|
else:
|
||||||
options['iverilog_args'] = [ "-g1995" ]
|
options['iverilog_args'] = [ "-g1995" ]
|
||||||
if enable_specify:
|
options['iverilog_args'].extend(saved_options)
|
||||||
options['iverilog_args'].append("-gspecify")
|
|
||||||
options['source'] = os.path.join("work", "vlog95.v")
|
options['source'] = os.path.join("work", "vlog95.v")
|
||||||
|
|
||||||
# Run the iverilog command
|
# Run the iverilog command
|
||||||
|
|
@ -269,33 +303,25 @@ def do_run_normal(options: dict, cfg: dict, expected_fail: bool,
|
||||||
else:
|
else:
|
||||||
log_results(it_key, "iverilog", ivl_res)
|
log_results(it_key, "iverilog", ivl_res)
|
||||||
|
|
||||||
if translation_fail:
|
ivl_rtn = build_ivl_return(translation_fail, ivl_res)
|
||||||
if ivl_res.returncode != 0:
|
if ivl_rtn:
|
||||||
return [0, "Passed - TE."]
|
return ivl_rtn
|
||||||
else:
|
|
||||||
return [1, "Failed - TE did not fail."]
|
|
||||||
elif ivl_res.returncode != 0:
|
|
||||||
return [1, "Failed - Compile failed."]
|
|
||||||
|
|
||||||
# run the vvp command
|
# run the vvp command
|
||||||
vvp_cmd = assemble_vvp_cmd(options, cfg)
|
vvp_cmd = assemble_vvp_cmd(options, cfg)
|
||||||
vvp_res = run_cmd(vvp_cmd)
|
vvp_res = run_cmd(vvp_cmd)
|
||||||
log_results(it_key, "vvp", vvp_res)
|
log_results(it_key, "vvp", vvp_res)
|
||||||
|
|
||||||
if vvp_res.returncode != 0 and expected_fail:
|
vvp_rtn = build_vvp_return(expected_fail, vvp_res)
|
||||||
return [0, "Passed - EF."]
|
if vvp_rtn:
|
||||||
if vvp_res.returncode >= 256:
|
return vvp_rtn
|
||||||
return [1, "Failed - vvp execution error"]
|
|
||||||
if vvp_res.returncode > 0 and vvp_res.returncode < 256 and not expected_fail:
|
|
||||||
return [1, "Failed - vvp error, but expected to succeed"]
|
|
||||||
|
|
||||||
it_stdout = vvp_res.stdout.decode('ascii')
|
|
||||||
log_list = ["iverilog-stdout", "iverilog-stderr",
|
log_list = ["iverilog-stdout", "iverilog-stderr",
|
||||||
"vvp-stdout", "vvp-stderr"]
|
"vvp-stdout", "vvp-stderr"]
|
||||||
if cfg['vlog95']:
|
if cfg['vlog95']:
|
||||||
log_list[2:2] = ["iverilog-vlog95-stdout", "iverilog-vlog95-stderr"]
|
log_list[2:2] = ["iverilog-vlog95-stdout", "iverilog-vlog95-stderr"]
|
||||||
|
|
||||||
return check_run_outputs(options, it_stdout, log_list, expected_fail)
|
return check_run_outputs(options, vvp_res.stdout.decode('ascii'), log_list, expected_fail)
|
||||||
|
|
||||||
def run_normal(options: dict, cfg: dict) -> list:
|
def run_normal(options: dict, cfg: dict) -> list:
|
||||||
'''Run a normal test'''
|
'''Run a normal test'''
|
||||||
|
|
|
||||||
|
|
@ -2,5 +2,8 @@
|
||||||
"type" : "normal",
|
"type" : "normal",
|
||||||
"source" : "sdf_interconnect1.v",
|
"source" : "sdf_interconnect1.v",
|
||||||
"iverilog-args" : [ "-Ttyp", "-ginterconnect", "-gspecify" ],
|
"iverilog-args" : [ "-Ttyp", "-ginterconnect", "-gspecify" ],
|
||||||
"gold" : "sdf_interconnect1"
|
"gold" : "sdf_interconnect1",
|
||||||
|
"vlog95" : {
|
||||||
|
"gold" : "sdf_interconnect1-vlog95"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,5 +2,8 @@
|
||||||
"type" : "normal",
|
"type" : "normal",
|
||||||
"source" : "sdf_interconnect2.v",
|
"source" : "sdf_interconnect2.v",
|
||||||
"iverilog-args" : [ "-Ttyp", "-ginterconnect", "-gspecify" ],
|
"iverilog-args" : [ "-Ttyp", "-ginterconnect", "-gspecify" ],
|
||||||
"gold" : "sdf_interconnect2"
|
"gold" : "sdf_interconnect2",
|
||||||
|
"vlog95" : {
|
||||||
|
"gold" : "sdf_interconnect2-vlog95"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,5 +2,8 @@
|
||||||
"type" : "normal",
|
"type" : "normal",
|
||||||
"source" : "sdf_interconnect3.v",
|
"source" : "sdf_interconnect3.v",
|
||||||
"iverilog-args" : [ "-Ttyp", "-ginterconnect", "-gspecify" ],
|
"iverilog-args" : [ "-Ttyp", "-ginterconnect", "-gspecify" ],
|
||||||
"gold" : "sdf_interconnect3"
|
"gold" : "sdf_interconnect3",
|
||||||
|
"vlog95" : {
|
||||||
|
"gold" : "sdf_interconnect3-vlog95"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue