mirror of https://github.com/YosysHQ/yosys.git
Fix: handle VCD variable references with and without whitespace
Co-authored-by: Miodrag Milanović <mmicko@gmail.com> Co-authored-by: Roland Coeurjoly <rolandcoeurjoly@gmail.com>
This commit is contained in:
parent
1bf908dea8
commit
76c615b2ae
|
@ -137,14 +137,22 @@ void FstData::extractVarNames()
|
|||
if (!var.is_alias)
|
||||
handle_to_var[h->u.var.handle] = var;
|
||||
std::string clean_name;
|
||||
bool has_space = false;
|
||||
for(size_t i=0;i<strlen(h->u.var.name);i++)
|
||||
{
|
||||
char c = h->u.var.name[i];
|
||||
if(c==' ') break;
|
||||
if(c==' ') { has_space = true; break; }
|
||||
clean_name += c;
|
||||
}
|
||||
if (clean_name[0]=='\\')
|
||||
clean_name = clean_name.substr(1);
|
||||
if (!has_space) {
|
||||
size_t pos = clean_name.find_last_of("[");
|
||||
std::string index_or_range = clean_name.substr(pos+1);
|
||||
if (index_or_range.find(":") != std::string::npos) {
|
||||
clean_name = clean_name.substr(0,pos);
|
||||
}
|
||||
}
|
||||
size_t pos = clean_name.find_last_of("<");
|
||||
if (pos != std::string::npos && clean_name.back() == '>') {
|
||||
std::string mem_cell = clean_name.substr(0, pos);
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
$date
|
||||
Fri Sep 27 11:58:46 2024
|
||||
$end
|
||||
$version
|
||||
GHDL v0
|
||||
$end
|
||||
$timescale
|
||||
1 fs
|
||||
$end
|
||||
$scope module standard $end
|
||||
$upscope $end
|
||||
$scope module std_logic_1164 $end
|
||||
$upscope $end
|
||||
$scope module tb $end
|
||||
$var reg 4 ! a [3:0] $end
|
||||
$var reg 4 " b [3:0] $end
|
||||
$scope module uut $end
|
||||
$var reg 4 # a [3:0] $end
|
||||
$var reg 4 $ b [3:0] $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$enddefinitions $end
|
||||
#0
|
||||
b0001 !
|
||||
b0001 "
|
||||
b0001 #
|
||||
b0001 $
|
||||
#10000000
|
|
@ -0,0 +1,28 @@
|
|||
$date
|
||||
Fri Sep 27 11:58:46 2024
|
||||
$end
|
||||
$version
|
||||
GHDL v0
|
||||
$end
|
||||
$timescale
|
||||
1 fs
|
||||
$end
|
||||
$scope module standard $end
|
||||
$upscope $end
|
||||
$scope module std_logic_1164 $end
|
||||
$upscope $end
|
||||
$scope module tb $end
|
||||
$var reg 4 ! a[3:0] $end
|
||||
$var reg 4 " b[3:0] $end
|
||||
$scope module uut $end
|
||||
$var reg 4 # a[3:0] $end
|
||||
$var reg 4 $ b[3:0] $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$enddefinitions $end
|
||||
#0
|
||||
b0001 !
|
||||
b0001 "
|
||||
b0001 #
|
||||
b0001 $
|
||||
#10000000
|
|
@ -0,0 +1,3 @@
|
|||
read_rtlil vector_assign.il
|
||||
sim -r var_reference_without_whitespace.vcd -scope tb.uut
|
||||
sim -r var_reference_with_whitespace.vcd -scope tb.uut
|
|
@ -0,0 +1,20 @@
|
|||
# Generated by Yosys 0.45+139 (git sha1 e7fc1b0cc, g++ 13.2.0 -fPIC -O3)
|
||||
autoidx 2
|
||||
attribute \architecture "Behavioral"
|
||||
attribute \library "work"
|
||||
attribute \hdlname "vector_assign"
|
||||
attribute \src "tests/verific/vector_assign.vhd:4.8-4.21"
|
||||
module \vector_assign
|
||||
attribute \src "tests/verific/vector_assign.vhd:6.9-6.10"
|
||||
wire width 4 input 2 \a
|
||||
attribute \src "tests/verific/vector_assign.vhd:7.9-7.10"
|
||||
wire width 4 output 1 \b
|
||||
attribute \src "tests/verific/vector_assign.vhd:13.5-13.6"
|
||||
cell $pos $verific$buf_3$tests/verific/vector_assign.vhd:13$1
|
||||
parameter \A_SIGNED 0
|
||||
parameter \A_WIDTH 4
|
||||
parameter \Y_WIDTH 4
|
||||
connect \A \a
|
||||
connect \Y \b
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue