Merge pull request #289 from The-OpenROAD-Project-staging/sta_write_verilog_fix
Fix write_verilog escape seq Issue 3826
This commit is contained in:
commit
8e08483e0e
|
|
@ -88,15 +88,12 @@ staToVerilog(const char *sta_name)
|
|||
for (const char *s = sta_name; *s ; s++) {
|
||||
char ch = s[0];
|
||||
if (ch == verilog_escape) {
|
||||
escaped = true;
|
||||
char next_ch = s[1];
|
||||
if (next_ch == verilog_escape) {
|
||||
escaped_name += ch;
|
||||
escaped_name += next_ch;
|
||||
s++;
|
||||
}
|
||||
else
|
||||
// Skip escape.
|
||||
escaped = true;
|
||||
}
|
||||
else {
|
||||
if ((!(isalnum(ch) || ch == '_')))
|
||||
|
|
@ -126,15 +123,12 @@ staToVerilog2(const char *sta_name)
|
|||
for (const char *s = sta_name; *s ; s++) {
|
||||
char ch = s[0];
|
||||
if (ch == verilog_escape) {
|
||||
escaped = true;
|
||||
char next_ch = s[1];
|
||||
if (next_ch == verilog_escape) {
|
||||
escaped_name += ch;
|
||||
escaped_name += next_ch;
|
||||
s++;
|
||||
}
|
||||
else
|
||||
// Skip escape.
|
||||
escaped = true;
|
||||
}
|
||||
else {
|
||||
bool is_brkt = (ch == bus_brkt_left || ch == bus_brkt_right);
|
||||
|
|
|
|||
|
|
@ -165,6 +165,7 @@ record_public_tests {
|
|||
suppress_msg
|
||||
verilog_attribute
|
||||
verilog_specify
|
||||
verilog_write_escape
|
||||
}
|
||||
|
||||
define_test_group fast [group_tests all]
|
||||
|
|
|
|||
|
|
@ -0,0 +1,18 @@
|
|||
module multi_sink (clk);
|
||||
input clk;
|
||||
|
||||
wire \alu_adder_result_ex[0] ;
|
||||
|
||||
hier_block \h1\x (.childclk(clk),
|
||||
.\Y[2:1] ({\alu_adder_result_ex[0] ,
|
||||
\alu_adder_result_ex[0] }));
|
||||
endmodule
|
||||
module hier_block (childclk,
|
||||
\Y[2:1] );
|
||||
input childclk;
|
||||
output [1:0] \Y[2:1] ;
|
||||
|
||||
|
||||
BUFx2_ASAP7_75t_R \abuf_$100 (.A(childclk));
|
||||
BUFx2_ASAP7_75t_R \ff0/name (.A(childclk));
|
||||
endmodule
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
# Check if "h1\x" and \Y[2:1] are correctly processed from input to output of Verilog
|
||||
read_liberty gf180mcu_sram.lib.gz
|
||||
read_liberty asap7_small.lib.gz
|
||||
read_verilog verilog_write_escape.v
|
||||
link_design multi_sink
|
||||
set output_file "verilog_write_escape_out.v"
|
||||
write_verilog $output_file
|
||||
set fp [open $output_file r]
|
||||
while {[gets $fp line] >= 0} {
|
||||
puts $line
|
||||
}
|
||||
close $fp
|
||||
read_verilog $output_file
|
||||
file delete $output_file
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
module \multi_sink (clk);
|
||||
input clk;
|
||||
wire \alu_adder_result_ex[0] ;
|
||||
\hier_block \h1\x (.childclk(clk), .\Y[2:1] ({ \alu_adder_result_ex[0] , \alu_adder_result_ex[0] }) );
|
||||
endmodule // multi_sink
|
||||
|
||||
module \hier_block (childclk, \Y[2:1] );
|
||||
input childclk;
|
||||
output [1:0] \Y[2:1] ;
|
||||
wire [1:0] \Y[2:1] ;
|
||||
BUFx2_ASAP7_75t_R \abuf_$100 (.A(childclk));
|
||||
BUFx2_ASAP7_75t_R \ff0/name (.A(childclk));
|
||||
endmodule // hier_block1
|
||||
|
|
@ -389,7 +389,8 @@ VerilogWriter::writeInstBusPin(const Instance *inst,
|
|||
if (!first_port)
|
||||
fprintf(stream_, ",\n ");
|
||||
|
||||
fprintf(stream_, ".%s({", network_->name(port));
|
||||
string port_vname = portVerilogName(network_->name(port));
|
||||
fprintf(stream_, ".%s({", port_vname.c_str());
|
||||
first_port = false;
|
||||
bool first_member = true;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue