blob: f857cd9111a513de35404e0a5fa1675e6f314818 [file] [log] [blame]
//
// Copyright 2022 Tobias Strauch, Munich, Bavaria
//
// SPDX-FileCopyrightText: 2020 Efabless Corporation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// SPDX-License-Identifier: Apache-2.0
//`default_nettype none
module minisoc #(
parameter BITS = 32
)(
`ifdef USE_POWER_PINS
inout vccd1, // User area 1 1.8V supply
inout vssd1, // User area 1 digital ground
`endif
// IOs
//input [`MPRJ_IO_PADS-1:0] io_in,
//output [`MPRJ_IO_PADS-1:0] io_out,
//output [`MPRJ_IO_PADS-1:0] io_oeb,
input [38-1:0] io_in,
output [38-1:0] io_out,
output [38-1:0] io_oeb,
input rstn_reg,
output ca_dbus_valid,
input ca_dbus_ack,
output ca_dbus_com,
output [2:0] ca_dbus_tid,
output [31:0] ca_dbus_data,
input ca_time_valid,
output ca_time_ack,
input [22:0] ca_time_data,
input ca_match_valid,
output ca_match_ack,
input [31:0] ca_command,
output cubev_pli_rstn,
output cubev_pli_clk1,
output cubev_pli_csb1,
output [7:0] cubev_pli_addr1,
input [31:0] cubev_pli_dout1,
output cubev_phi_rstn,
output cubev_phi_clk1,
output cubev_phi_csb1,
output [7:0] cubev_phi_addr1,
input [31:0] cubev_phi_dout1,
output cubev_dli_rstn,
output cubev_dli_clk0,
output cubev_dli_csb0,
output cubev_dli_web0,
output [3:0] cubev_dli_wmask0,
output [7:0] cubev_dli_addr0,
output [31:0] cubev_dli_din0,
input [31:0] cubev_dli_dout0,
output cubev_dli_clk1,
output cubev_dli_csb1,
output [7:0] cubev_dli_addr1,
input [31:0] cubev_dli_dout1,
output cubev_dhi_rstn,
output cubev_dhi_clk0,
output cubev_dhi_csb0,
output cubev_dhi_web0,
output [3:0] cubev_dhi_wmask0,
output [7:0] cubev_dhi_addr0,
output [31:0] cubev_dhi_din0,
input [31:0] cubev_dhi_dout0,
output cubev_dhi_clk1,
output cubev_dhi_csb1,
output [7:0] cubev_dhi_addr1,
input [31:0] cubev_dhi_dout1,
output cubev_rf1_rstn,
output cubev_rf1_clk0,
output cubev_rf1_csb0,
output cubev_rf1_web0,
output [3:0] cubev_rf1_wmask0,
output [7:0] cubev_rf1_addr0,
output [31:0] cubev_rf1_din0,
input [31:0] cubev_rf1_dout0,
output cubev_rf1_clk1,
output cubev_rf1_csb1,
output [7:0] cubev_rf1_addr1,
input [31:0] cubev_rf1_dout1,
output cubev_rf2_rstn,
output cubev_rf2_clk0,
output cubev_rf2_csb0,
output cubev_rf2_web0,
output [3:0] cubev_rf2_wmask0,
output [7:0] cubev_rf2_addr0,
output [31:0] cubev_rf2_din0,
input [31:0] cubev_rf2_dout0,
output cubev_rf2_clk1,
output cubev_rf2_csb1,
output [7:0] cubev_rf2_addr1,
input [31:0] cubev_rf2_dout1,
output cubev_reg_0_rstn,
output cubev_reg_0_clk0,
output cubev_reg_0_csb0,
output cubev_reg_0_web0,
output [3:0] cubev_reg_0_wmask0,
output [7:0] cubev_reg_0_addr0,
output [31:0] cubev_reg_0_din0,
input [31:0] cubev_reg_0_dout0,
output cubev_reg_0_clk1,
output cubev_reg_0_csb1,
output [7:0] cubev_reg_0_addr1,
input [31:0] cubev_reg_0_dout1,
output cubev_reg_1_rstn,
output cubev_reg_1_clk0,
output cubev_reg_1_csb0,
output cubev_reg_1_web0,
output [3:0] cubev_reg_1_wmask0,
output [7:0] cubev_reg_1_addr0,
output [31:0] cubev_reg_1_din0,
input [31:0] cubev_reg_1_dout0,
output cubev_reg_1_clk1,
output cubev_reg_1_csb1,
output [7:0] cubev_reg_1_addr1,
input [31:0] cubev_reg_1_dout1,
output cubev_reg_2_rstn,
output cubev_reg_2_clk0,
output cubev_reg_2_csb0,
output cubev_reg_2_web0,
output [3:0] cubev_reg_2_wmask0,
output [7:0] cubev_reg_2_addr0,
output [31:0] cubev_reg_2_din0,
input [31:0] cubev_reg_2_dout0,
output cubev_reg_2_clk1,
output cubev_reg_2_csb1,
output [7:0] cubev_reg_2_addr1,
input [31:0] cubev_reg_2_dout1,
output cubev_reg_3_rstn,
output cubev_reg_3_clk0,
output cubev_reg_3_csb0,
output cubev_reg_3_web0,
output [3:0] cubev_reg_3_wmask0,
output [7:0] cubev_reg_3_addr0,
output [31:0] cubev_reg_3_din0,
input [31:0] cubev_reg_3_dout0,
output cubev_reg_3_clk1,
output cubev_reg_3_csb1,
output [7:0] cubev_reg_3_addr1,
input [31:0] cubev_reg_3_dout1,
output cubev_reg_4_rstn,
output cubev_reg_4_clk0,
output cubev_reg_4_csb0,
output cubev_reg_4_web0,
output [3:0] cubev_reg_4_wmask0,
output [7:0] cubev_reg_4_addr0,
output [31:0] cubev_reg_4_din0,
input [31:0] cubev_reg_4_dout0,
output cubev_reg_4_clk1,
output cubev_reg_4_csb1,
output [7:0] cubev_reg_4_addr1,
input [31:0] cubev_reg_4_dout1,
output cubev_reg_5_rstn,
output cubev_reg_5_clk0,
output cubev_reg_5_csb0,
output cubev_reg_5_web0,
output [3:0] cubev_reg_5_wmask0,
output [7:0] cubev_reg_5_addr0,
output [31:0] cubev_reg_5_din0,
input [31:0] cubev_reg_5_dout0,
output cubev_reg_5_clk1,
output cubev_reg_5_csb1,
output [7:0] cubev_reg_5_addr1,
input [31:0] cubev_reg_5_dout1);
wire clk_root;
//reg rstn;
//always @(posedge clk_root) //or posedge wb_rst_i)
//if (wb_rst_i)
// rstn <= 1'b0;
//else
// rstn <= rstn_reg;
wire rstn = rstn_reg;
////////////////////////////////////////////////////////////////////
// wave_cnt is static and only relevant for internal clock domain.
// Nevertheless, I want to propagate it to the internal logic
// by a register chain. By using wb_clk_i I generate unconstraint paths
// (which is what I want).
////////////////////////////////////////////////////////////////////
reg [1:0] wave_cnt_cap;
always @(posedge clk_root or negedge rstn_reg)
if (~rstn_reg)
wave_cnt_cap <= 2'b00;
else
wave_cnt_cap <= io_in[35:34];
/*
reg [1:0] wave_cnt_wb_clk_i;
always @(posedge clk_root or posedge rstn_reg)
if (~rstn_reg)
wave_cnt_wb_clk_i <= 1'b0;
else
wave_cnt_wb_clk_i <= wave_cnt_cap;
*/
wire clk_debug;
wire clk_debug_n;
assign io_out[35] = clk_debug;
assign io_out[36] = clk_debug_n;
reg wr_clk_sel = 1'b0;
reg wr_conf = 1'b0;
always @(*) begin
case (cubev_reg_5_dout1[28])
1'b1 : wr_clk_sel <= 1'b1;
1'b0 : wr_clk_sel <= 1'b0;
default : wr_clk_sel <= 1'b0;
endcase
case (cubev_reg_5_dout1[27])
1'b1 : wr_conf <= 1'b1;
1'b0 : wr_conf <= 1'b0;
default : wr_conf <= 1'b0;
endcase
end
clock_gen i_cg ( .clk_in(io_in[32]),
.resetn(rstn_reg),
.wr_clk_sel(wr_clk_sel & rstn),
.wr_conf(wr_conf & rstn),
//.wr_dbg(wr_clk_dbg),
//.cubev_dli_din0(cubev_dli_din0),
//.cubev_dhi_din0(cubev_dhi_din0),
.ext_run_en(io_in[33]),
.clk_root(clk_root),
.clk_debug(clk_debug),
.clk_debug_n(clk_debug_n));
// prog routing
/*wire prog_h_clk;
wire prog_l_clk;
wire prog_h_wen;
wire prog_l_wen;
wire [10:0] prog_h_addr0;
wire [10:0] prog_l_addr0;
wire [31:0] prog_h_din;
wire [31:0] prog_l_din;
*/
//wire [31:0] prog_h_dout;
//wire [31:0] prog_l_dout;
// minisoc routing
//wire cubev_pli_clk;
//wire cubev_phi_clk;
wire [13:0] cubev_pli_pcl;
wire [13:0] cubev_phi_pch;
//wire [31:0] instrl;
//wire [31:0] instrh;
//reg [31:0] cubev_pli_instrl_reg;
//reg [31:0] cubev_phi_instrh_reg;
assign cubev_pli_rstn = rstn;
assign cubev_pli_clk1 = clk_root;
assign cubev_pli_csb1 = 1'b0;
assign cubev_pli_addr1 = cubev_pli_pcl[11:3];
assign cubev_phi_rstn = rstn;
assign cubev_phi_clk1 = clk_root;
assign cubev_phi_csb1 = 1'b0;
assign cubev_phi_addr1 = cubev_phi_pch[11:3];
assign cubev_dli_rstn = rstn;
assign cubev_dli_clk0 = clk_root;
assign cubev_dli_csb0 = 1'b0;
assign cubev_dli_clk1 = clk_root;
assign cubev_dli_csb1 = 1'b0;
assign cubev_dli_addr1 = cubev_dli_addr0;
assign cubev_dhi_rstn = rstn;
assign cubev_dhi_clk0 = clk_root;
assign cubev_dhi_csb0 = 1'b0;
assign cubev_dhi_clk1 = clk_root;
assign cubev_dhi_csb1 = 1'b0;
assign cubev_dhi_addr1 = cubev_dhi_addr0;
assign cubev_rf1_rstn = rstn;
assign cubev_rf1_clk0 = clk_root;
assign cubev_rf1_wmask0 = 4'hf;
assign cubev_rf1_clk1 = clk_root;
assign cubev_rf1_csb1 = 1'b0;
assign cubev_rf2_rstn = rstn;
assign cubev_rf2_clk0 = clk_root;
assign cubev_rf2_wmask0 = 4'hf;
assign cubev_rf2_clk1 = clk_root;
assign cubev_rf2_csb1 = 1'b0;
///////////////////////////////////////////////////
// REG 0
///////////////////////////////////////////////////
assign cubev_reg_0_rstn = rstn;
assign cubev_reg_0_clk0 = clk_root;
assign cubev_reg_0_web0 = cubev_reg_0_csb0;
assign cubev_reg_0_wmask0 = 4'hf;
assign cubev_reg_0_addr0 = {5'h00, cubev_reg_0_tidwr};
assign cubev_reg_0_clk1 = clk_root;
assign cubev_reg_0_csb1 = 1'b0;
assign cubev_reg_0_addr1 = {5'h00, cubev_reg_0_tidrd0};
///////////////////////////////////////////////////
// REG 1
///////////////////////////////////////////////////
assign cubev_reg_1_rstn = rstn;
assign cubev_reg_1_clk0 = clk_root;
assign cubev_reg_1_web0 = cubev_reg_1_csb0;
assign cubev_reg_1_wmask0 = 4'hf;
assign cubev_reg_1_addr0 = {5'h00, cubev_reg_1_tidwr};
assign cubev_reg_1_clk1 = clk_root;
assign cubev_reg_1_csb1 = 1'b0;
assign cubev_reg_1_addr1 = {5'h00, cubev_reg_1_tidrd0};
///////////////////////////////////////////////////
// REG 2
///////////////////////////////////////////////////
assign cubev_reg_2_rstn = rstn;
assign cubev_reg_2_clk0 = clk_root;
assign cubev_reg_2_web0 = cubev_reg_2_csb0;
assign cubev_reg_2_wmask0 = 4'hf;
assign cubev_reg_2_addr0 = {5'h00, cubev_reg_2_tidwr};
assign cubev_reg_2_clk1 = clk_root;
assign cubev_reg_2_csb1 = 1'b0;
assign cubev_reg_2_addr1 = {5'h00, cubev_reg_2_tidrd0};
///////////////////////////////////////////////////
// REG 3
///////////////////////////////////////////////////
assign cubev_reg_3_rstn = rstn;
assign cubev_reg_3_clk0 = clk_root;
assign cubev_reg_3_web0 = cubev_reg_3_csb0;
assign cubev_reg_3_wmask0 = 4'hf;
assign cubev_reg_3_addr0 = {5'h00, cubev_reg_3_tidwr};
assign cubev_reg_3_clk1 = clk_root;
assign cubev_reg_3_csb1 = 1'b0;
assign cubev_reg_3_addr1 = {5'h00, cubev_reg_3_tidrd0};
///////////////////////////////////////////////////
// REG 4
///////////////////////////////////////////////////
assign cubev_reg_4_rstn = rstn;
assign cubev_reg_4_clk0 = clk_root;
assign cubev_reg_4_web0 = cubev_reg_4_csb0;
assign cubev_reg_4_wmask0 = 4'hf;
assign cubev_reg_4_addr0 = {5'h00, cubev_reg_4_tidwr};
assign cubev_reg_4_clk1 = clk_root;
assign cubev_reg_4_csb1 = 1'b0;
assign cubev_reg_4_addr1 = {5'h00, cubev_reg_4_tidrd0};
///////////////////////////////////////////////////
// REG 5
///////////////////////////////////////////////////
assign cubev_reg_5_rstn = rstn;
assign cubev_reg_5_clk0 = clk_root;
assign cubev_reg_5_web0 = cubev_reg_5_csb0;
assign cubev_reg_5_wmask0 = 4'hf;
assign cubev_reg_5_addr0 = {5'h00, cubev_reg_5_tidwr};
assign cubev_reg_5_clk1 = clk_root;
assign cubev_reg_5_csb1 = 1'b0;
assign cubev_reg_5_addr1 = {5'h00, cubev_reg_5_tidrd0};
//////////////////////////////////////
// Data high memory
//////////////////////////////////////
/*
wire cubev_dhi_clk0;
wire cubev_dhi_csb0;
wire cubev_dhi_web0;
wire [3:0] cubev_dhi_wmask0;
wire [7:0] cubev_dhi_addr0;
wire [31:0] cubev_dhi_din0;
wire [31:0] cubev_dhi_dout0;
wire cubev_dhi_clk1;
wire cubev_dhi_csb1;
wire [7:0] cubev_dhi_addr1;
wire [31:0] cubev_dhi_dout1;
*/
//wire [31:0] dbus_rdwr_add;
/*
wire ca_dbus_valid;
wire ca_dbus_ack;
wire ca_dbus_com;
wire [2:0] ca_dbus_tid;
wire [31:0] ca_dbus_data;
wire ca_time_valid;
wire ca_time_ack;
wire [22:0] ca_time_data;
wire ca_match_valid;
wire ca_match_ack;
wire [31:0] ca_command;
*/
/*
cawb cai (
.wb_clk_i(wb_clk_i),
.rstn(~wb_rst_i),
.wb_rst_i(wb_rst_i),
.wbs_ack_o(wbs_ack_o),
.wbs_cyc_i(wbs_cyc_i),
.wbs_stb_i(wbs_stb_i),
.wbs_we_i(wbs_we_i),
.wbs_adr_i(wbs_adr_i),
.wbs_dat_i(wbs_dat_i),
.la_data_in(la_data_in),
.rstn_reg(rstn_reg),
.cubev_pli_clk0(cubev_pli_clk0),
.cubev_pli_csb0(cubev_pli_csb0),
.cubev_pli_web0(cubev_pli_web0),
.cubev_pli_wmask0(cubev_pli_wmask0),
.cubev_pli_addr0(cubev_pli_addr0),
.cubev_pli_din0(cubev_pli_din0),
.cubev_pli_dout0(cubev_pli_dout0),
.cubev_phi_clk0(cubev_phi_clk0),
.cubev_phi_csb0(cubev_phi_csb0),
.cubev_phi_web0(cubev_phi_web0),
.cubev_phi_wmask0(cubev_phi_wmask0),
.cubev_phi_addr0(cubev_phi_addr0),
.cubev_phi_din0(cubev_phi_din0),
.cubev_phi_dout0(cubev_phi_dout0),
.ca_dbus_valid(ca_dbus_valid),
.ca_dbus_ack(ca_dbus_ack),
.ca_dbus_com(ca_dbus_com),
.ca_dbus_tid(ca_dbus_tid),
.ca_dbus_data(ca_dbus_data),
.ca_time_valid(ca_time_valid),
.ca_time_ack(ca_time_ack),
.ca_time_data(ca_time_data),
.ca_match_valid(ca_match_valid),
.ca_match_ack(ca_match_ack),
.ca_command(ca_command),
.cubev_ca_clk0(cubev_ca_clk0),
.cubev_ca_csb0(cubev_ca_csb0),
.cubev_ca_web0(cubev_ca_web0),
.cubev_ca_wmask0(cubev_ca_wmask0),
.cubev_ca_addr0(cubev_ca_addr0),
.cubev_ca_din0(cubev_ca_din0),
.cubev_ca_dout0(cubev_ca_dout0),
.cubev_ca_clk1(cubev_ca_clk1),
.cubev_ca_csb1(cubev_ca_csb1),
.cubev_ca_addr1(cubev_ca_addr1),
.cubev_ca_dout1(cubev_ca_dout1));
*/
///////////////////////////////////////////////////
// RF1
///////////////////////////////////////////////////
wire cubev_rf1_clk;
wire cubev_rf1_cs;
wire cubev_rf1_we;
wire [7:0] cubev_rf1_wr_add;
wire [31:0] cubev_rf1_din;
wire [7:0] cubev_rf1_rd_add;
wire [31:0] cubev_rf1_dout;
//reg [31:0] cubev_rf1_dout_reg;
///////////////////////////////////////////////////
// RF2
///////////////////////////////////////////////////
wire cubev_rf2_clk;
wire cubev_rf2_cs;
wire cubev_rf2_we;
wire [7:0] cubev_rf2_wr_add;
wire [31:0] cubev_rf2_din;
wire [7:0] cubev_rf2_rd_add;
wire [31:0] cubev_rf2_dout;
//reg [31:0] cubev_rf2_dout_reg;
///////////////////////////////////////////////////
// Reg Model
///////////////////////////////////////////////////
/*
wire [31:0] cubev_reg_0_din;
wire [31:0] cubev_reg_1_din;
wire [31:0] cubev_reg_2_din;
wire [31:0] cubev_reg_3_din;
wire [31:0] cubev_reg_4_din;
wire [31:0] cubev_reg_5_din;
wire [31:0] cubev_reg_0_dout;
wire [31:0] cubev_reg_1_dout;
wire [31:0] cubev_reg_2_dout;
wire [31:0] cubev_reg_3_dout;
wire [31:0] cubev_reg_4_dout;
wire [31:0] cubev_reg_5_dout;
*/
//reg [31:0] cubev_reg_0_dout_reg;
//reg [31:0] cubev_reg_1_dout_reg;
//reg [31:0] cubev_reg_2_dout_reg;
//reg [31:0] cubev_reg_3_dout_reg;
//reg [31:0] cubev_reg_4_dout_reg;
//reg [31:0] cubev_reg_5_dout_reg;
/*
wire cubev_dhi_web0;
wire [3:0] cubev_dhi_wmask0;
wire [7:0] cubev_dhi_addr;
wire [31:0] cubev_dhi_din0;
wire [31:0] cubev_dhi_dout1;
wire cubev_dli_web0;
wire [3:0] cubev_dli_wmask0;
wire [7:0] cubev_dli_addr;
wire [31:0] cubev_dli_din0;
wire [31:0] cubev_dli_dout1;
*/
wire cubev_reg_0_clk;
wire cubev_reg_0_cs;
wire [2:0] cubev_reg_0_tidwr;
wire [2:0] cubev_reg_0_tidrd0;
wire cubev_reg_1_clk;
wire cubev_reg_1_cs;
wire [2:0] cubev_reg_1_tidwr;
wire [2:0] cubev_reg_1_tidrd0;
wire cubev_reg_2_clk;
wire cubev_reg_2_cs;
wire [2:0] cubev_reg_2_tidwr;
wire [2:0] cubev_reg_2_tidrd0;
wire cubev_reg_3_clk;
wire cubev_reg_3_cs;
wire [2:0] cubev_reg_3_tidwr;
wire [2:0] cubev_reg_3_tidrd0;
wire cubev_reg_4_clk;
wire cubev_reg_4_cs;
wire [2:0] cubev_reg_4_tidwr;
wire [2:0] cubev_reg_4_tidrd0;
wire cubev_reg_5_clk;
wire cubev_reg_5_cs;
wire [2:0] cubev_reg_5_tidwr;
wire [2:0] cubev_reg_5_tidrd0;
wavesync wsi ( .clk_root(clk_root),
.rstn(rstn),
.wave_cnt(wave_cnt_cap),
.gpio_out(io_out[35:0]),
.gpio_in(io_in[37:0]),
.gpio_oeb(io_oeb[37:0]),
.ca_dbus_valid(ca_dbus_valid),
.ca_dbus_ack(ca_dbus_ack),
.ca_dbus_com(ca_dbus_com),
.ca_dbus_tid(ca_dbus_tid),
.ca_dbus_data(ca_dbus_data),
.ca_time_valid(ca_time_valid),
.ca_time_ack(ca_time_ack),
.ca_time_data(ca_time_data),
.ca_match_valid(ca_match_valid),
.ca_match_ack(ca_match_ack),
.ca_command(ca_command),
//.cubev_pli_clk(cubev_pli_clk),
//.cubev_phi_clk(cubev_phi_clk),
.cubev_pli_pcl(cubev_pli_pcl),
.cubev_phi_pch(cubev_phi_pch),
.cubev_pli_instrl_reg(cubev_pli_dout1),
.cubev_phi_instrh_reg(cubev_phi_dout1),
//.cubev_dhi_clk(cubev_dhi_clk),
.cubev_dhi_web0(cubev_dhi_web0),
.cubev_dhi_wmask0(cubev_dhi_wmask0),
.cubev_dhi_addr(cubev_dhi_addr0),
.cubev_dhi_din0(cubev_dhi_din0),
.cubev_dhi_dout1(cubev_dhi_dout1),
//.cubev_dli_clk(cubev_dli_clk),
.cubev_dli_web0(cubev_dli_web0),
.cubev_dli_wmask0(cubev_dli_wmask0),
.cubev_dli_addr(cubev_dli_addr0),
.cubev_dli_din0(cubev_dli_din0),
.cubev_dli_dout1(cubev_dli_dout1),
.cubev_rf1_cs(cubev_rf1_csb0),
.cubev_rf1_we(cubev_rf1_web0),
.cubev_rf1_wr_add(cubev_rf1_addr0),
.cubev_rf1_din(cubev_rf1_din0),
.cubev_rf1_rd_add(cubev_rf1_addr1),
.cubev_rf1_dout(cubev_rf1_dout1),
.cubev_rf2_cs(cubev_rf2_csb0),
.cubev_rf2_we(cubev_rf2_web0),
.cubev_rf2_wr_add(cubev_rf2_addr0),
.cubev_rf2_din(cubev_rf2_din0),
.cubev_rf2_rd_add(cubev_rf2_addr1),
.cubev_rf2_dout(cubev_rf2_dout1),
.cubev_reg_0_cs(cubev_reg_0_csb0),
.cubev_reg_0_tidwr(cubev_reg_0_tidwr),
.cubev_reg_0_din(cubev_reg_0_din0),
.cubev_reg_0_tidrd0(cubev_reg_0_tidrd0),
.cubev_reg_0_dout(cubev_reg_0_dout1),
.cubev_reg_1_cs(cubev_reg_1_csb0),
.cubev_reg_1_tidwr(cubev_reg_1_tidwr),
.cubev_reg_1_din(cubev_reg_1_din0),
.cubev_reg_1_tidrd0(cubev_reg_1_tidrd0),
.cubev_reg_1_dout(cubev_reg_1_dout1),
.cubev_reg_2_cs(cubev_reg_2_csb0),
.cubev_reg_2_tidwr(cubev_reg_2_tidwr),
.cubev_reg_2_din(cubev_reg_2_din0),
.cubev_reg_2_tidrd0(cubev_reg_2_tidrd0),
.cubev_reg_2_dout(cubev_reg_2_dout1),
.cubev_reg_3_cs(cubev_reg_3_csb0),
.cubev_reg_3_tidwr(cubev_reg_3_tidwr),
.cubev_reg_3_din(cubev_reg_3_din0),
.cubev_reg_3_tidrd0(cubev_reg_3_tidrd0),
.cubev_reg_3_dout(cubev_reg_3_dout1),
.cubev_reg_4_cs(cubev_reg_4_csb0),
.cubev_reg_4_tidwr(cubev_reg_4_tidwr),
.cubev_reg_4_din(cubev_reg_4_din0),
.cubev_reg_4_tidrd0(cubev_reg_4_tidrd0),
.cubev_reg_4_dout(cubev_reg_4_dout1),
.cubev_reg_5_cs(cubev_reg_5_csb0),
.cubev_reg_5_tidwr(cubev_reg_5_tidwr),
.cubev_reg_5_din(cubev_reg_5_din0),
.cubev_reg_5_tidrd0(cubev_reg_5_tidrd0),
.cubev_reg_5_dout(cubev_reg_5_dout1));
///////////////////////////////////////////////////
// CA RAM
///////////////////////////////////////////////////
/*
sky130_sram_1kbyte_1rw1r_32x256_8 cubev_cai (
.clk0(cubev_ca_clk),
.csb0(1'b0),
.web0(cubev_ca_wea),
.wmask0(4'hf),
.addr0({2'b00, cubev_ca_addra[5:0]}),
.din0(cubev_ca_dina),
.dout0(cubev_ca_douta),
.clk1(cubev_ca_clk),
.csb1(1'b0),
.addr1({2'b00, cubev_ca_addrb[5:0]}),
.dout1(cubev_ca_doutb));
*/
///////////////////////////////////////////////////
// CUBE-V Prog L
///////////////////////////////////////////////////
/*
sky130_sram_1kbyte_1rw1r_32x256_8 cubev_pli
(
.clk0 (prog_l_clk),
.csb0 (1'b0),
.web0 (prog_l_wen),
.wmask0 (4'hf),
.addr0 (prog_l_addr0[9:1]),
.din0 (prog_l_din),
.dout0 (prog_l_dout),
.clk1 (cubev_pli_clk),
.csb1 (1'b0),
.addr1 (cubev_pli_pcl[11:3]),
.dout1 (instrl)
);
*/
//always @ (posedge cubev_pli_clk1)
// cubev_pli_instrl_reg <= cubev_pli_dout1;
///////////////////////////////////////////////////
// CUBE-V Prog H
///////////////////////////////////////////////////
/*
sky130_sram_1kbyte_1rw1r_32x256_8 cubev_phi
(
.clk0 (prog_h_clk),
.csb0 (1'b0),
.web0 (prog_h_wen),
.wmask0 (4'hf),
.addr0 (prog_h_addr0[9:1]),
.din0 (prog_h_din),
.dout0 (prog_h_dout),
.clk1 (cubev_phi_clk),
.csb1 (1'b0),
.addr1 (cubev_phi_pch[11:3]),
.dout1 (instrh)
);
*/
//always @ (posedge cubev_phi_clk1)
// cubev_phi_instrh_reg <= cubev_phi_dout1;
///////////////////////////////////////////////////
// CUBE-V Dat H
///////////////////////////////////////////////////
//reg [31:0] cubev_dhi_dout1_reg;
/*
sky130_sram_1kbyte_1rw1r_32x256_8 cubev_dhi
(
.clk0 (cubev_dhi_clk),
.csb0 (1'b0),
.web0 (cubev_dhi_web0),
.wmask0 (cubev_dhi_wmask0),
.addr0 (cubev_dhi_addr),
.din0 (cubev_dhi_din0),
.dout0 (),
.clk1 (cubev_dhi_clk),
.csb1 (1'b0),
.addr1 (cubev_dhi_addr),
.dout1 (cubev_dhi_dout1_int)
);
*/
//always @ (posedge cubev_dhi_clk1)
// cubev_dhi_dout1_reg <= cubev_dhi_dout1;
///////////////////////////////////////////////////
// CUBE-V Dat L
///////////////////////////////////////////////////
//reg [31:0] cubev_dli_dout1_reg;
/*
sky130_sram_1kbyte_1rw1r_32x256_8 cubev_dli
(
.clk0 (cubev_dli_clk),
.csb0 (1'b0),
.web0 (cubev_dli_web0),
.wmask0 (cubev_dli_wmask0),
.addr0 (cubev_dli_addr),
.din0 (cubev_dli_din0),
.dout0 (),
.clk1 (cubev_dli_clk),
.csb1 (1'b0),
.addr1 (cubev_dli_addr),
.dout1 (cubev_dli_dout1_int)
);
*/
//always @ (posedge cubev_dli_clk1)
// cubev_dli_dout1_reg <= cubev_dli_dout1;
///////////////////////////////////////////////////
// RF1
///////////////////////////////////////////////////
/*
sky130_sram_1kbyte_1rw1r_32x256_8 cubev_rf1i (
.clk0(cubev_rf1_clk),
.csb0(cubev_rf1_cs),
.web0(cubev_rf1_we),
.wmask0(4'hf),
.addr0(cubev_rf1_wr_add),
.din0(cubev_rf1_din),
.dout0(),
.clk1(cubev_rf1_clk),
.csb1(1'b0),
.addr1(cubev_rf1_rd_add),
.dout1(cubev_rf1_dout));
*/
//always @ (posedge cubev_rf1_clk1)
// cubev_rf1_dout_reg <= cubev_rf1_dout1;
///////////////////////////////////////////////////
// RF2
///////////////////////////////////////////////////
/*
sky130_sram_1kbyte_1rw1r_32x256_8 cubev_rf2i (
.clk0(cubev_rf2_clk),
.csb0(cubev_rf2_cs),
.web0(cubev_rf2_we),
.wmask0(4'hf),
.addr0(cubev_rf2_wr_add),
.din0(cubev_rf2_din),
.dout0(),
.clk1(cubev_rf2_clk),
.csb1(1'b0),
.addr1(cubev_rf2_rd_add),
.dout1(cubev_rf2_dout));
*/
//always @ (posedge cubev_rf2_clk1)
// cubev_rf2_dout_reg <= cubev_rf2_dout1;
///////////////////////////////////////////////////
// Regs
///////////////////////////////////////////////////
/*
sky130_sram_1kbyte_1rw1r_32x256_8 cubev_reg_0 (
.clk0(cubev_reg_0_clk),
.csb0(cubev_reg_0_cs),
.web0(cubev_reg_0_cs),
.wmask0(4'hf),
.addr0({5'h00, cubev_reg_0_tidwr}),
.din0(cubev_reg_0_din),
.dout0(),
.clk1(cubev_reg_0_clk),
.csb1(1'b0),
.addr1({5'h00, cubev_reg_0_tidrd0}),
.dout1(cubev_reg_0_dout));
*/
//always @ (posedge cubev_reg_0_clk1)
// cubev_reg_0_dout_reg <= cubev_reg_0_dout1;
/*
sky130_sram_1kbyte_1rw1r_32x256_8 cubev_reg_1 (
.clk0(cubev_reg_1_clk),
.csb0(cubev_reg_1_cs),
.web0(cubev_reg_1_cs),
.wmask0(4'hf),
.addr0({5'h00, cubev_reg_1_tidwr}),
.din0(cubev_reg_1_din),
.dout0(),
.clk1(cubev_reg_1_clk),
.csb1(1'b0),
.addr1({5'h00, cubev_reg_1_tidrd0}),
.dout1(cubev_reg_1_dout));
*/
//always @ (posedge cubev_reg_1_clk1)
// cubev_reg_1_dout_reg <= cubev_reg_1_dout1;
/*
sky130_sram_1kbyte_1rw1r_32x256_8 cubev_reg_2 (
.clk0(cubev_reg_2_clk),
.csb0(cubev_reg_2_cs),
.web0(cubev_reg_2_cs),
.wmask0(4'hf),
.addr0({5'h00, cubev_reg_2_tidwr}),
.din0(cubev_reg_2_din),
.dout0(),
.clk1(cubev_reg_2_clk),
.csb1(1'b0),
.addr1({5'h00, cubev_reg_2_tidrd0}),
.dout1(cubev_reg_2_dout));
*/
//always @ (posedge cubev_reg_2_clk1)
// cubev_reg_2_dout_reg <= cubev_reg_2_dout1;
/*
sky130_sram_1kbyte_1rw1r_32x256_8 cubev_reg_3 (
.clk0(cubev_reg_3_clk),
.csb0(cubev_reg_3_cs),
.web0(cubev_reg_3_cs),
.wmask0(4'hf),
.addr0({5'h00, cubev_reg_3_tidwr}),
.din0(cubev_reg_3_din),
.dout0(),
.clk1(cubev_reg_3_clk),
.csb1(1'b0),
.addr1({5'h00, cubev_reg_3_tidrd0}),
.dout1(cubev_reg_3_dout));
*/
//always @ (posedge cubev_reg_3_clk1)
// cubev_reg_3_dout_reg <= cubev_reg_3_dout1;
/*
sky130_sram_1kbyte_1rw1r_32x256_8 cubev_reg_4 (
.clk0(cubev_reg_4_clk),
.csb0(cubev_reg_4_cs),
.web0(cubev_reg_4_cs),
.wmask0(4'hf),
.addr0({5'h00, cubev_reg_4_tidwr}),
.din0(cubev_reg_4_din),
.dout0(),
.clk1(cubev_reg_4_clk),
.csb1(1'b0),
.addr1({5'h00, cubev_reg_4_tidrd0}),
.dout1(cubev_reg_4_dout));
*/
//always @ (posedge cubev_reg_4_clk1)
// cubev_reg_4_dout_reg <= cubev_reg_4_dout1;
/*
sky130_sram_1kbyte_1rw1r_32x256_8 cubev_reg_5 (
.clk0(cubev_reg_5_clk),
.csb0(cubev_reg_5_cs),
.web0(cubev_reg_5_cs),
.wmask0(4'hf),
.addr0({5'h00, cubev_reg_5_tidwr}),
.din0(cubev_reg_5_din),
.dout0(),
.clk1(cubev_reg_5_clk),
.csb1(1'b0),
.addr1({5'h00, cubev_reg_5_tidrd0}),
.dout1(cubev_reg_5_dout));
*/
//always @ (posedge cubev_reg_5_clk1)
// cubev_reg_5_dout_reg <= cubev_reg_5_dout1;
endmodule
//`default_nettype wire