Guest User

Untitled

a guest
Jul 22nd, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.67 KB | None | 0 0
  1. module moroso_test_tlb(
  2. input clkin,
  3. input aa,
  4. input ptw2arb_rvalid_,
  5. input ptw2arb_stall_,
  6. input dtlb_re_a_,
  7. input dtlb_re_b_,
  8. input [19:0] dtlb_pagedir_base_,
  9. input [7:0] dtlb_rdata_stuff_,
  10. input [19:0] dtlb_addr_a_,
  11. input [19:0] dtlb_addr_b_,
  12. output b
  13. );
  14.  
  15. /*AUTOWIRE*/
  16. // Beginning of automatic wires (for undeclared instantiated-module outputs)
  17. wire [3:0] dtlb_flags_a; // From dtlb_inst of MCPU_MEM_dtlb.v
  18. wire [3:0] dtlb_flags_b; // From dtlb_inst of MCPU_MEM_dtlb.v
  19. wire [31:12] dtlb_phys_addr_a; // From dtlb_inst of MCPU_MEM_dtlb.v
  20. wire [31:12] dtlb_phys_addr_b; // From dtlb_inst of MCPU_MEM_dtlb.v
  21. wire dtlb_ready; // From dtlb_inst of MCPU_MEM_dtlb.v
  22. wire [31:12] tlb2ptw_addr; // From dtlb_inst of MCPU_MEM_dtlb.v
  23. wire [19:0] tlb2ptw_pagedir_base; // From dtlb_inst of MCPU_MEM_dtlb.v
  24. wire tlb2ptw_re; // From dtlb_inst of MCPU_MEM_dtlb.v
  25. // End of automatics
  26.  
  27. wire [31:12] tlb2ptw_phys_addr;
  28. wire tlb2ptw_ready;
  29. wire [3:0] tlb2ptw_pagetab_flags;
  30. wire [3:0] tlb2ptw_pagedir_flags;
  31.  
  32. wire ptw2arb_valid;
  33. wire [2:0] ptw2arb_opcode;
  34. wire [31:5] ptw2arb_addr;
  35.  
  36. reg ptw2arb_rvalid;
  37. reg ptw2arb_stall;
  38. reg dtlb_re_a;
  39. reg dtlb_re_b;
  40. reg [19:0] dtlb_pagedir_base;
  41. reg [7:0] dtlb_rdata_stuff;
  42. reg [19:0] dtlb_addr_a;
  43. reg [19:0] dtlb_addr_b;
  44.  
  45. assign b = ^dtlb_flags_a ^ ^dtlb_flags_b ^ ^dtlb_phys_addr_a ^ ^dtlb_phys_addr_b
  46. ^ dtlb_ready // ^ ^tlb2ptw_addr ^ ^tlb2ptw_pagedir_base ^ tlb2ptw_re;
  47. ^ ptw2arb_valid ^ ^ptw2arb_opcode ^ ^ptw2arb_addr;
  48.  
  49. wire clkout;
  50. clkpll clk_inst(.refclk(clkin), .outclk_0(clkout));
  51.  
  52. reg a = 1;
  53. always @(posedge clkout) begin
  54. a <= ~aa;
  55. ptw2arb_rvalid <= ptw2arb_rvalid_;
  56. ptw2arb_stall <= ptw2arb_stall_;
  57. dtlb_re_a <= dtlb_re_a_;
  58. dtlb_re_b <= dtlb_re_b_;
  59. dtlb_pagedir_base <= dtlb_pagedir_base_;
  60. dtlb_rdata_stuff <= dtlb_rdata_stuff_;
  61. dtlb_addr_a <= dtlb_addr_a_;
  62. dtlb_addr_b <= dtlb_addr_b_;
  63. end
  64.  
  65. MCPU_MEM_dtlb dtlb_inst(
  66. // Outputs
  67. .dtlb_phys_addr_a (dtlb_phys_addr_a[31:12]),
  68. .dtlb_phys_addr_b (dtlb_phys_addr_b[31:12]),
  69. .dtlb_flags_a (dtlb_flags_a[3:0]),
  70. .dtlb_flags_b (dtlb_flags_b[3:0]),
  71. .dtlb_ready (dtlb_ready),
  72. .tlb2ptw_addr (tlb2ptw_addr[31:12]),
  73. .tlb2ptw_re (tlb2ptw_re),
  74. .tlb2ptw_pagedir_base(tlb2ptw_pagedir_base[19:0]),
  75. // Inputs
  76. .clk (clkout),
  77. .dtlb_addr_a ({20{a}}),
  78. .dtlb_addr_b ({20{a}}),
  79. .dtlb_re_a (dtlb_re_a),
  80. .dtlb_re_b (dtlb_re_b),
  81. .dtlb_pagedir_base(dtlb_pagedir_base),
  82. .tlb2ptw_phys_addr(tlb2ptw_phys_addr),
  83. .tlb2ptw_ready(tlb2ptw_ready),
  84. .tlb2ptw_pagetab_flags(tlb2ptw_pagetab_flags),
  85. .tlb2ptw_pagedir_flags(tlb2ptw_pagedir_flags),
  86. );
  87.  
  88. MCPU_MEM_pt_walk walk_inst(
  89. .tlb2ptw_clk(clkout),
  90.  
  91. .tlb2ptw_addr(tlb2ptw_addr),
  92. .tlb2ptw_re(tlb2ptw_re),
  93. .tlb2ptw_pagedir_base(tlb2ptw_pagedir_base),
  94.  
  95. .tlb2ptw_phys_addr(tlb2ptw_phys_addr),
  96. .tlb2ptw_ready(tlb2ptw_ready),
  97. .tlb2ptw_pagetab_flags(tlb2ptw_pagetab_flags),
  98. .tlb2ptw_pagedir_flags(tlb2ptw_pagedir_flags),
  99.  
  100.  
  101. // Atom interface to arb
  102. .ptw2arb_valid(ptw2arb_valid),
  103. .ptw2arb_opcode(ptw2arb_opcode),
  104. .ptw2arb_addr(ptw2arb_addr),
  105.  
  106. .ptw2arb_rdata({4{dtlb_rdata_stuff,56'b0}}),
  107. .ptw2arb_rvalid(ptw2arb_rvalid),
  108. .ptw2arb_stall(ptw2arb_stall)
  109. );
  110. endmodule
Add Comment
Please, Sign In to add comment