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)
|
if (!var.is_alias)
|
||||||
handle_to_var[h->u.var.handle] = var;
|
handle_to_var[h->u.var.handle] = var;
|
||||||
std::string clean_name;
|
std::string clean_name;
|
||||||
|
bool has_space = false;
|
||||||
for(size_t i=0;i<strlen(h->u.var.name);i++)
|
for(size_t i=0;i<strlen(h->u.var.name);i++)
|
||||||
{
|
{
|
||||||
char c = h->u.var.name[i];
|
char c = h->u.var.name[i];
|
||||||
if(c==' ') break;
|
if(c==' ') { has_space = true; break; }
|
||||||
clean_name += c;
|
clean_name += c;
|
||||||
}
|
}
|
||||||
if (clean_name[0]=='\\')
|
if (clean_name[0]=='\\')
|
||||||
clean_name = clean_name.substr(1);
|
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("<");
|
size_t pos = clean_name.find_last_of("<");
|
||||||
if (pos != std::string::npos && clean_name.back() == '>') {
|
if (pos != std::string::npos && clean_name.back() == '>') {
|
||||||
std::string mem_cell = clean_name.substr(0, pos);
|
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