modelsim 시뮬레이션에서 자꾸 에러가 뜹니다.(verilog)
글쓴이: paulus1206 / 작성시간: 월, 2011/06/20 - 7:36오후
nh400프로세서를 만드는데 alu회로의 값이 불러와 지질 않네요.
module nh400_top(
clk,
rst_x,
// instruction memory
imem_addr,
idata,
// data memory
dmem_oeb,
dmem_web,
dmem_addr,
dmem_rdata,
dmem_wdata
);
input clk, rst_x;
input [15:0] idata;
input [3:0] dmem_rdata;
output [10:0] imem_addr;
output dmem_oeb, dmem_web;
output [3:0] dmem_wdata;
output [11:0] dmem_addr;
wire [11:0] pc_next, PC, pc_branch;
wire branch;
wire [15:0] inst;
wire [3:0] X, Y, ACC, SP;
wire [1:0] SR;
wire mem_read, mem_write;
wire write_x, write_y, write_acc;
wire write_sp, write_pc;
wire [1:0] write_sr;
wire [1:0] src_x, src_y, src_acc, src_sr, src_sp;
wire [3:0] wdata_x, wdata_y, wdata_acc, wdata_sp;
wire [1:0] wdata_sr;
wire [3:0] ex_oper1, ex_oper2;
wire [3:0] alu_op;
wire [3:0] ex_result;
wire [1:0] ex_flag;
wire [11:0] wdata_pc;
wire wait_mem, stall;
reg clear_pc;
always @(posedge clk or negedge rst_x)
begin
if (!rst_x)
clear_pc <= 1'b1;
else
clear_pc <= 1'b0;
end
assign wdata_pc = clear_pc ? 12'b0 : pc_next;
nh400_dec u_decoder(
.clk (clk),
.rst_x (rst_x),
.inst (inst),
.X (X),
.Y (Y),
.ACC (ACC),
.SP (SP),
.PC (PC),
.SR (SR),
// we need execution unit
.ex_result (ex_result),
.ex_oper1 (ex_oper1),
.ex_oper2 (ex_oper2),
.mem_rdata (dmem_rdata),
.mem_wdata (dmem_wdata),
.mem_read (mem_read),
.mem_write (mem_write),
.mem_add (dmem_addr),
.gpr_write ({write_acc, write_y, write_x}),
.write_sr (write_sr),
.write_sp (write_sp),
.write_pc (write_pc),
.src_x (src_x),
.src_y (src_y),
.src_acc (src_acc),
.src_sr (src_sr),
.src_sp (src_sp),
.alu_op (alu_op),
.wait_mem (wait_mem),
.stall (stall),
.branch (branch),
.pc_branch (pc_branch)
);
nh400_data_map u_data_map(
// rename write_sr
.write_sr (write_sr),
.src_x (src_x),
.src_y (src_y),
.src_acc (src_acc),
.src_sr (src_sr),
.src_sp (src_sp),
.ex_result (ex_result),
.ex_oper1 (ex_oper1),
.mem_rdata (dmem_rdata),
.ex_flag (ex_flag),
.wdata_x (wdata_x),
.wdata_y (wdata_y),
.wdata_acc (wdata_acc),
.wdata_sp (wdata_sp),
.wdata_sr (wdata_sr)
);
nh400_spr u_spr(
.clk (clk),
.reset (rst_x),
.SP (SP),
.SR (SR),
.PC (PC),
.write_sp (write_sp),
.write_sr (write_sr[0] || write_sr[1]),
.write_pc (write_pc),
.wdata_sp (wdata_sp),
.wdata_sr (wdata_sr),
.wdata_pc (wdata_pc)
);
nh400_gpr u_gpr(
.clk (clk),
.X (X),
.Y (Y),
.ACC (ACC),
.write_x (write_x),
.write_y (write_y),
.write_acc (write_acc),
.wdata_x (wdata_x),
.wdata_y (wdata_y),
.wdata_acc (wdata_acc)
);
nh400_dmemctrl u_dmemctrl(
.clk (clk),
.rst_x (rst_x),
.mem_read (mem_read),
.mem_write (mem_write),
.dmem_oeb (dmem_oeb),
.dmem_web (dmem_web),
.wait_mem (wait_mem)
);
// Project : you should replace these modules with your own modules (alu, fetch).
nh400_alu u_alu(
.operation (alu_op),
.a (ex_oper1),
.b (ex_oper2),
.cin (SR[1]),
.zin (SR[0]),
.result (ex_result),
.cout (ex_flag[1]),
.zout (ex_flag[0])
);
nh400_fetch u_fetch(
.clk (clk),
.rst_x (rst_x),
.stall (stall),
.pc_next (pc_next),
.pc (PC),
.branch (branch),
.pc_branch (pc_branch),
.imem_addr (imem_addr),
.idata (idata),
.instruction (inst)
);
endmodule나머지 함수들은 문제없이 잘 읽어 들이는데
여기 맨 밑줄 쪽에 있는 fetch하구 alu회로를 연결에서, 사진 첨부 한것 과 같이 module에서 찾을수 가 없다고 뜨네요.
인풋값이나 아웃풋 값을 똑같이 했는데도 이런 증상이 계속 반복되는데 ㅠㅠ
.clk (clk),
.rst_x (rst_x),
.stall (stall),
.pc_next (pc_next),
.pc (PC),
.branch (branch),
.pc_branch (pc_branch),
.imem_addr (imem_addr),
.idata (idata),
.instruction (inst)
.clk를 제거하고 괄호 안의 부분만 넣어서 해도 찾을수가 없다고 나옵니다.
어떻게 하면 해결할수 있을까요?? ㅠㅠ 고수님들 좀 도와주세요ㅡ
File attachments:
| 첨부 | 파일 크기 |
|---|---|
| 75.45 KB |
Forums:


먼저 nh400_alu 모듈을 찾아보셔야
먼저 nh400_alu 모듈을 찾아보셔야 겠네요.
해당 모듈이 없거나, 있더라도 그 모듈에는 "a", "b" 등등과 같은 포트는 없는것 처럼 보이네요.
nh400_fetch 도 같은 증상처럼 보입니다.
---
배려하는 마음을 갖자.
댓글 달기