data/full_repos/permissive/40989439/AdiHDLLib/library/prcfg/qpsk/prcfg_adc.v
1: b'%Error: data/full_repos/permissive/40989439/AdiHDLLib/library/prcfg/qpsk/prcfg_adc.v:121: Cannot find file containing module: \'ad_pnmon\'\n  ad_pnmon #(\n  ^~~~~~~~\n        ... Looked in:\n             data/full_repos/permissive/40989439/AdiHDLLib/library/prcfg/qpsk,data/full_repos/permissive/40989439/ad_pnmon\n             data/full_repos/permissive/40989439/AdiHDLLib/library/prcfg/qpsk,data/full_repos/permissive/40989439/ad_pnmon.v\n             data/full_repos/permissive/40989439/AdiHDLLib/library/prcfg/qpsk,data/full_repos/permissive/40989439/ad_pnmon.sv\n             ad_pnmon\n             ad_pnmon.v\n             ad_pnmon.sv\n             obj_dir/ad_pnmon\n             obj_dir/ad_pnmon.v\n             obj_dir/ad_pnmon.sv\n%Error: data/full_repos/permissive/40989439/AdiHDLLib/library/prcfg/qpsk/prcfg_adc.v:139: Cannot find file containing module: \'qpsk_demod\'\n  qpsk_demod i_qpsk_demod1 (\n  ^~~~~~~~~~\n%Warning-WIDTH: data/full_repos/permissive/40989439/AdiHDLLib/library/prcfg/qpsk/prcfg_adc.v:169: Operator EQ expects 4 bits on the RHS, but RHS\'s CONST \'3\'h2\' generates 3 bits.\n                                                                                                : ... In instance prcfg_adc\n    if((mode == 3\'d2) && (channel_sel == CHANNEL_ID)) begin\n             ^~\n                ... Use "/* verilator lint_off WIDTH */" and lint_on around source to disable this message.\n%Error: Exiting due to 2 error(s), 1 warning(s)\n'
module prcfg_adc (
  clk,


  control,
  status,


  src_adc_valid,
  src_adc_data,
  src_adc_enable,

  dst_adc_valid,
  dst_adc_data,
  dst_adc_enable
);

  parameter   CHANNEL_ID    = 0;
  parameter   DATA_WIDTH    = 32;

  localparam  SYMBOL_WIDTH  = 2;
  localparam  RP_ID         = 8'hA2;

  input                               clk;

  input   [31:0]                      control;
  output  [31:0]                      status;

  input                               src_adc_valid;
  input   [(DATA_WIDTH-1):0]          src_adc_data;
  input                               src_adc_enable;

  output                              dst_adc_valid;
  output  [(DATA_WIDTH-1):0]          dst_adc_data;
  output                              dst_adc_enable;

  reg                                 dst_adc_valid   = 'h0;
  reg     [(DATA_WIDTH-1):0]          dst_adc_data    = 'h0;
  reg                                 dst_adc_enable  = 'h0;

  reg     [ 7:0]                      adc_pn_data     = 'hF1;
  reg     [31:0]                      status          = 'h0;
  reg     [ 3:0]                      mode            = 'h0;
  reg     [ 3:0]                      channel_sel     = 'h0;

  wire                                adc_valid;
  wire    [(SYMBOL_WIDTH-1):0]        adc_data_s;
  wire    [ 7:0]                      adc_pn_data_s;
  wire                                adc_pn_err_s;
  wire                                adc_pn_oos_s;


  function [ 7:0] pn;
    input [ 7:0] din;
    reg   [ 7:0] dout;
    begin
      dout[7] = din[6];
      dout[6] = din[5];
      dout[5] = din[4];
      dout[4] = din[3];
      dout[3] = din[2];
      dout[2] = din[1];
      dout[1] = din[7] ^ din[4];
      dout[0] = din[6] ^ din[3];
      pn = dout;
    end
  endfunction


  always @(posedge clk) begin
    channel_sel <= control[ 3:0];
    mode        <= control[ 7:4];
  end

  assign adc_valid  = src_adc_valid & src_adc_enable;

  assign adc_pn_data_s = (adc_pn_oos_s == 1'b1) ? {adc_pn_data[7:2], adc_data_s} : adc_pn_data;

  ad_pnmon #(
    .DATA_WIDTH(8)
  ) i_pn_mon (
    .adc_clk(clk),
    .adc_valid_in(adc_valid),
    .adc_data_in({adc_pn_data[7:2], adc_data_s}),
    .adc_data_pn(adc_pn_data_s),
    .adc_pn_oos(adc_pn_oos_s),
    .adc_pn_err(adc_pn_err_s));


  always @(posedge clk) begin
    if(adc_valid == 1'b1) begin
      adc_pn_data <= pn(adc_pn_data);
    end
  end


  qpsk_demod i_qpsk_demod1 (
    .clk(clk),
    .data_qpsk_i(src_adc_data[15: 0]),
    .data_qpsk_q(src_adc_data[31:16]),
    .data_valid(adc_valid),
    .data_output(adc_data_s)
  );


  always @(posedge clk) begin

    dst_adc_valid <= src_adc_valid;
    dst_adc_enable <= src_adc_enable;

    case(mode)

      4'h0 : begin
        dst_adc_data <= src_adc_data;
      end
      4'h1 : begin
        dst_adc_data <= 32'h0;
      end
      4'h2 : begin
        dst_adc_data <= {30'h0, adc_data_s};
      end
      default : begin
        dst_adc_data <= src_adc_data;
      end
    endcase

    if((mode == 3'd2) && (channel_sel == CHANNEL_ID)) begin
      status <= {22'h0, adc_pn_err_s, adc_pn_oos_s, RP_ID};
    end else begin
      status <= {24'h0, RP_ID};
    end
  end

endmodule
module prcfg_adc (
  clk,


  control,
  status,


  src_adc_valid,
  src_adc_data,
  src_adc_enable,

  dst_adc_valid,
  dst_adc_data,
  dst_adc_enable
);


  parameter   CHANNEL_ID    = 0;
  parameter   DATA_WIDTH    = 32;

  localparam  SYMBOL_WIDTH  = 2;
  localparam  RP_ID         = 8'hA2;

  input                               clk;

  input   [31:0]                      control;
  output  [31:0]                      status;

  input                               src_adc_valid;
  input   [(DATA_WIDTH-1):0]          src_adc_data;
  input                               src_adc_enable;

  output                              dst_adc_valid;
  output  [(DATA_WIDTH-1):0]          dst_adc_data;
  output                              dst_adc_enable;

  reg                                 dst_adc_valid   = 'h0;
  reg     [(DATA_WIDTH-1):0]          dst_adc_data    = 'h0;
  reg                                 dst_adc_enable  = 'h0;

  reg     [ 7:0]                      adc_pn_data     = 'hF1;
  reg     [31:0]                      status          = 'h0;
  reg     [ 3:0]                      mode            = 'h0;
  reg     [ 3:0]                      channel_sel     = 'h0;

  wire                                adc_valid;
  wire    [(SYMBOL_WIDTH-1):0]        adc_data_s;
  wire    [ 7:0]                      adc_pn_data_s;
  wire                                adc_pn_err_s;
  wire                                adc_pn_oos_s;


  function [ 7:0] pn;
    input [ 7:0] din;
    reg   [ 7:0] dout;
    begin
      dout[7] = din[6];
      dout[6] = din[5];
      dout[5] = din[4];
      dout[4] = din[3];
      dout[3] = din[2];
      dout[2] = din[1];
      dout[1] = din[7] ^ din[4];
      dout[0] = din[6] ^ din[3];
      pn = dout;
    end
  endfunction


  always @(posedge clk) begin
    channel_sel <= control[ 3:0];
    mode        <= control[ 7:4];
  end

  assign adc_valid  = src_adc_valid & src_adc_enable;

  assign adc_pn_data_s = (adc_pn_oos_s == 1'b1) ? {adc_pn_data[7:2], adc_data_s} : adc_pn_data;

  ad_pnmon #(
    .DATA_WIDTH(8)
  ) i_pn_mon (
    .adc_clk(clk),
    .adc_valid_in(adc_valid),
    .adc_data_in({adc_pn_data[7:2], adc_data_s}),
    .adc_data_pn(adc_pn_data_s),
    .adc_pn_oos(adc_pn_oos_s),
    .adc_pn_err(adc_pn_err_s));


  always @(posedge clk) begin
    if(adc_valid == 1'b1) begin
      adc_pn_data <= pn(adc_pn_data);
    end
  end


  qpsk_demod i_qpsk_demod1 (
    .clk(clk),
    .data_qpsk_i(src_adc_data[15: 0]),
    .data_qpsk_q(src_adc_data[31:16]),
    .data_valid(adc_valid),
    .data_output(adc_data_s)
  );


  always @(posedge clk) begin

    dst_adc_valid <= src_adc_valid;
    dst_adc_enable <= src_adc_enable;

    case(mode)

      4'h0 : begin
        dst_adc_data <= src_adc_data;
      end
      4'h1 : begin
        dst_adc_data <= 32'h0;
      end
      4'h2 : begin
        dst_adc_data <= {30'h0, adc_data_s};
      end
      default : begin
        dst_adc_data <= src_adc_data;
      end
    endcase

    if((mode == 3'd2) && (channel_sel == CHANNEL_ID)) begin
      status <= {22'h0, adc_pn_err_s, adc_pn_oos_s, RP_ID};
    end else begin
      status <= {24'h0, RP_ID};
    end
  end

endmodule