Unicode Verilog:错误:不匹配的字符(十六进制)
我在Verilog中编写了一个shift/add乘法器,它通过在线编译器编译时不会出错,但当我试图通过CMD窗口使用iverilog编译它时,我收到以下错误: shiftadd.v:1:错误:字符不匹配(十六进制U+019E) (U+019E是我能找到的最接近它的unicode字符)。我的代码中是什么导致了这个错误?我不想传递任何十六进制值Unicode Verilog:错误:不匹配的字符(十六进制),unicode,verilog,Unicode,Verilog,我在Verilog中编写了一个shift/add乘法器,它通过在线编译器编译时不会出错,但当我试图通过CMD窗口使用iverilog编译它时,我收到以下错误: shiftadd.v:1:错误:字符不匹配(十六进制U+019E) (U+019E是我能找到的最接近它的unicode字符)。我的代码中是什么导致了这个错误?我不想传递任何十六进制值 module shiftaddmult(product, multiplicand, multiplier, clk); input clk;
module shiftaddmult(product, multiplicand, multiplier, clk);
input clk;
output reg [63:0] product;
input [63:0] multiplicand;
input [31:0] multiplier;
integer i;
always @(posedge clk) //m or m
begin
if(i< 32)
begin
product[63:32] = 16'b0000_0000_0000_0000;
product[32:16] = multiplier;
if(product[0] == 1)
begin
product[63:32] = product[63:32] + multiplicand;
product [63:0] = product[63:1];
end
else
begin
product [63:0] = product[63:1];
end
i = i + 1;
end
end //end always
endmodule //shift add
module tester(output reg [63:0] product,
output reg [63:0] multiplicand,
output reg [31:0] multiplier,
output reg clk,
output reg i);
initial
begin
i = 0;
clk = 0;
$dumpfile("multdump.dat");
$dumpvars;
#10 multiplier = 16'b0000_0000_0000_0001;
multiplicand = 16'b0000_0000_0000_0010;
//result should = 2
#20 multiplier = 16'b0000_0000_0000_0010;
multiplicand = 16'b0000_0000_0000_0100;
//result should = 'd8
#30 multiplier = 16'b0000_0000_0000_1000;
multiplicand = 16'b0000_0000_0000_1000;
//result should = 'd16
#40 $finish;
end
always begin
#5 clk = ~clk; //clock generator
end
endmodule
module testbench;
wire [63:0] product;
wire [63:0] multiplicand;
wire [31:0] multiplier;
wire i;
wire clk;
tester test(product, multiplicand, multiplier, clk, i);
shiftaddmult mult(product, multiplicand, multiplier, clk);
endmodule
module shiftadmdmult(乘积、被乘数、乘数、时钟);
输入时钟;
输出reg[63:0]产品;
输入[63:0]被乘数;
输入[31:0]倍增器;
整数i;
始终@(posedge clk)//m或m
开始
如果(i<32)
开始
乘积[63:32]=16'b0000_0000_0000_0000;
乘积[32:16]=乘数;
如果(产品[0]==1)
开始
乘积[63:32]=乘积[63:32]+被乘数;
产品[63:0]=产品[63:1];
结束
其他的
开始
产品[63:0]=产品[63:1];
结束
i=i+1;
结束
结束//总是结束
endmodule//shift-add
模块测试仪(输出注册[63:0]产品,
输出寄存器[63:0]被乘数,
输出寄存器[31:0]乘数,
输出寄存器时钟,
输出寄存器i);
最初的
开始
i=0;
clk=0;
$dumpfile(“multdump.dat”);
$dumpvars;
#10乘数=16'b0000\U 0000\U 0000\U 0001;
被乘数=16'b0000_0000_0000_0010;
//结果应为2
#20乘数=16'b0000\U 0000\U 0000\U 0010;
被乘数=16'b0000\U 0000\U 0000\U 0100;
//结果应为'd8
#30乘数=16'b0000\U 0000\U 0000\U 1000;
被乘数=16'b0000_0000_0000_1000;
//结果应该='d16
#40美元;
结束
总是开始
#5时钟=~clk//时钟发生器
结束
端模
模块测试台;
电线[63:0]产品;
导线[63:0]被乘数;
导线[31:0]倍增器;
电线i;
电线电缆;
测试仪测试(产品、被乘数、乘数、clk、i);
shiftadmdmult(乘积、被乘数、乘数、clk);
端模
看起来您正在从浏览器复制代码并将其粘贴到源代码中。从浏览器中复制代码也会复制一些编译器无法检测到的特殊字符。
我建议您重新编写代码,不要复制和粘贴。用键盘把这些行再写一遍。
这将起作用并消除不需要的字符。字符是什么?同时显示命令行。这段代码对我来说非常适合。@EugeneSh。我编辑了这篇文章,以包含它最接近的字符的unicode编号resembles@enkayh尝试将此页面中的代码复制/粘贴到新文件并编译。如果有一些无效字符,它将清除它们。@EugeneSh。我尝试了多次,但没有成功。同样的错误会被打印出来