Merge pull request #880 from mole99/master
Print more information about the SDF header
This commit is contained in:
commit
b210eb8264
|
|
@ -0,0 +1,11 @@
|
|||
ivltests/sdf_header.sdf:2:SDF INFO: Version: 3.0
|
||||
ivltests/sdf_header.sdf:3:SDF INFO: Design: test
|
||||
ivltests/sdf_header.sdf:4:SDF INFO: Date: Wed Mar 8 12:34:56 2023
|
||||
ivltests/sdf_header.sdf:5:SDF INFO: Vendor: No Vendor
|
||||
ivltests/sdf_header.sdf:6:SDF INFO: Program: Human
|
||||
ivltests/sdf_header.sdf:7:SDF INFO: Program Version: 1.0.0
|
||||
ivltests/sdf_header.sdf:8:SDF INFO: Divider: "/"
|
||||
ivltests/sdf_header.sdf:9:SDF INFO: Voltage: 5.000000
|
||||
ivltests/sdf_header.sdf:10:SDF INFO: Process: best=0.65:nom=1.0:worst=1.8
|
||||
ivltests/sdf_header.sdf:11:SDF INFO: Temperature: 25.000000
|
||||
ivltests/sdf_header.sdf:12:SDF INFO: Timescale: 1ps
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
(DELAYFILE
|
||||
(SDFVERSION "3.0")
|
||||
(DESIGN "test")
|
||||
(DATE "Wed Mar 8 12:34:56 2023")
|
||||
(VENDOR "No Vendor")
|
||||
(PROGRAM "Human")
|
||||
(VERSION "1.0.0")
|
||||
(DIVIDER /)
|
||||
(VOLTAGE 5.5:5.0:4.5)
|
||||
(PROCESS "best=0.65:nom=1.0:worst=1.8")
|
||||
(TEMPERATURE -25.0:25.0:85.0)
|
||||
(TIMESCALE 1 ps)
|
||||
|
||||
// Do nothing
|
||||
(CELL
|
||||
(CELLTYPE "top")
|
||||
(INSTANCE )
|
||||
)
|
||||
)
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
`timescale 1ns/1ps
|
||||
|
||||
module top;
|
||||
|
||||
initial begin
|
||||
$sdf_annotate("ivltests/sdf_header.sdf", top);
|
||||
end
|
||||
|
||||
endmodule
|
||||
|
||||
|
|
@ -35,3 +35,4 @@ struct_packed_write_read vvp_tests/struct_packed_write_read.json
|
|||
struct_packed_write_read2 vvp_tests/struct_packed_write_read2.json
|
||||
sv_foreach9 vvp_tests/sv_foreach9.json
|
||||
sv_foreach10 vvp_tests/sv_foreach10.json
|
||||
sdf_header vvp_tests/sdf_header.json
|
||||
|
|
|
|||
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"type" : "normal",
|
||||
"source" : "sdf_header.v",
|
||||
"gold" : "sdf_header",
|
||||
"iverilog-args" : [ "-gspecify" ],
|
||||
"vvp-args-extended" : [ "-sdf-verbose" ]
|
||||
}
|
||||
|
|
@ -108,8 +108,10 @@ sdf_header_item
|
|||
|
||||
sdfversion
|
||||
: '(' K_SDFVERSION QSTRING ')'
|
||||
{ free($3);
|
||||
}
|
||||
{ if (sdf_flag_inform) vpi_printf("%s:%d:SDF INFO: Version: %s\n",
|
||||
sdf_parse_path, @2.first_line, $3);
|
||||
free($3);
|
||||
}
|
||||
;
|
||||
|
||||
design_name
|
||||
|
|
@ -153,14 +155,33 @@ program_version
|
|||
;
|
||||
|
||||
hierarchy_divider
|
||||
: '(' K_DIVIDER '.' ')' { sdf_use_hchar = '.'; }
|
||||
| '(' K_DIVIDER '/' ')' { sdf_use_hchar = '/'; }
|
||||
| '(' K_DIVIDER HCHAR ')' { /* sdf_use_hchar no-change */; }
|
||||
: '(' K_DIVIDER '.' ')'
|
||||
{ sdf_use_hchar = '.';
|
||||
if (sdf_flag_inform) vpi_printf("%s:%d:SDF INFO: Divider: \"%c\"\n", sdf_parse_path, @1.first_line, sdf_use_hchar);
|
||||
}
|
||||
| '(' K_DIVIDER '/' ')'
|
||||
{ sdf_use_hchar = '/';
|
||||
if (sdf_flag_inform) vpi_printf("%s:%d:SDF INFO: Divider: \"%c\"\n", sdf_parse_path, @1.first_line, sdf_use_hchar);
|
||||
}
|
||||
| '(' K_DIVIDER HCHAR ')'
|
||||
{ /* sdf_use_hchar no-change */
|
||||
if (sdf_flag_inform) vpi_printf("%s:%d:SDF INFO: Divider: \"%c\"\n", sdf_parse_path, @1.first_line, sdf_use_hchar);
|
||||
}
|
||||
;
|
||||
|
||||
voltage
|
||||
: '(' K_VOLTAGE rtriple ')'
|
||||
{ /* The value must be defined. */
|
||||
if (! $3.defined) {
|
||||
vpi_printf("%s:%d: SDF ERROR: Chosen value not defined.\n", sdf_parse_path, @1.first_line);
|
||||
}
|
||||
else if (sdf_flag_inform) vpi_printf("%s:%d:SDF INFO: Voltage: %f\n",
|
||||
sdf_parse_path, @2.first_line, $3.value);
|
||||
}
|
||||
| '(' K_VOLTAGE signed_real_number ')'
|
||||
{ if (sdf_flag_inform) vpi_printf("%s:%d:SDF INFO: Voltage: %f\n",
|
||||
sdf_parse_path, @2.first_line, $3);
|
||||
}
|
||||
;
|
||||
|
||||
process
|
||||
|
|
@ -173,17 +194,27 @@ process
|
|||
|
||||
temperature
|
||||
: '(' K_TEMPERATURE rtriple ')'
|
||||
{ /* The value must be defined. */
|
||||
if (! $3.defined) {
|
||||
vpi_printf("%s:%d: SDF ERROR: Chosen value not defined.\n", sdf_parse_path, @1.first_line);
|
||||
}
|
||||
else if (sdf_flag_inform) vpi_printf("%s:%d:SDF INFO: Temperature: %f\n",
|
||||
sdf_parse_path, @2.first_line, $3.value);
|
||||
}
|
||||
| '(' K_TEMPERATURE signed_real_number ')'
|
||||
{ if (sdf_flag_inform) vpi_printf("%s:%d:SDF INFO: Temperature: %f\n",
|
||||
sdf_parse_path, @2.first_line, $3);
|
||||
}
|
||||
;
|
||||
|
||||
time_scale
|
||||
: '(' K_TIMESCALE REAL_NUMBER IDENTIFIER ')'
|
||||
{ if (sdf_flag_inform) vpi_printf("%s:%d:SDF INFO: TIMESCALE : %f%s\n",
|
||||
{ if (sdf_flag_inform) vpi_printf("%s:%d:SDF INFO: Timescale: %f%s\n",
|
||||
sdf_parse_path, @2.first_line, $3, $4);
|
||||
free($4);
|
||||
}
|
||||
| '(' K_TIMESCALE INTEGER IDENTIFIER ')'
|
||||
{ if (sdf_flag_inform) vpi_printf("%s:%d:SDF INFO: TIMESCALE : %lu%s\n",
|
||||
{ if (sdf_flag_inform) vpi_printf("%s:%d:SDF INFO: Timescale: %lu%s\n",
|
||||
sdf_parse_path, @2.first_line, $3, $4);
|
||||
free($4);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue