<@U016EM8L91B> <@U017X0NM2E7> what is the pin name...
# chipignite
s
@Tim Edwards @Mitch Bailey what is the pin name on chip for io_analog[5] pad in the caraval chip?is it different pad than io_in[5]? I am unable to locate it using pinout mapping documentation at https://caravel-harness.readthedocs.io/en/latest/pinout.html#pinout-6x10-wlcsp
🌍 1
t
Pinouts in the caravan chip are the same as caravel; pins like
io_analog
are internal pin names. The mapping is offset because some tools can't deal with verilog arrays that don't go down to zero. The best mapping description is here: https://github.com/efabless/caravel_user_project_analog/blob/main/verilog/rtl/user_analog_proj_example.v
Copy code
/*
 * I/O mapping for analog
 *
 * mprj_io[37]  io_in/out/oeb/in_3v3[26]  ---                    ---
 * mprj_io[36]  io_in/out/oeb/in_3v3[25]  ---                    ---
 * mprj_io[35]  io_in/out/oeb/in_3v3[24]  gpio_analog/noesd[17]  ---
 * mprj_io[34]  io_in/out/oeb/in_3v3[23]  gpio_analog/noesd[16]  ---
 * mprj_io[33]  io_in/out/oeb/in_3v3[22]  gpio_analog/noesd[15]  ---
 * mprj_io[32]  io_in/out/oeb/in_3v3[21]  gpio_analog/noesd[14]  ---
 * mprj_io[31]  io_in/out/oeb/in_3v3[20]  gpio_analog/noesd[13]  ---
 * mprj_io[30]  io_in/out/oeb/in_3v3[19]  gpio_analog/noesd[12]  ---
 * mprj_io[29]  io_in/out/oeb/in_3v3[18]  gpio_analog/noesd[11]  ---
 * mprj_io[28]  io_in/out/oeb/in_3v3[17]  gpio_analog/noesd[10]  ---
 * mprj_io[27]  io_in/out/oeb/in_3v3[16]  gpio_analog/noesd[9]   ---
 * mprj_io[26]  io_in/out/oeb/in_3v3[15]  gpio_analog/noesd[8]   ---
 * mprj_io[25]  io_in/out/oeb/in_3v3[14]  gpio_analog/noesd[7]   ---
 * mprj_io[24]  ---                       ---                    user_analog[10]
 * mprj_io[23]  ---                       ---                    user_analog[9]
 * mprj_io[22]  ---                       ---                    user_analog[8]
 * mprj_io[21]  ---                       ---                    user_analog[7]
 * mprj_io[20]  ---                       ---                    user_analog[6]  clamp[2]
 * mprj_io[19]  ---                       ---                    user_analog[5]  clamp[1]
 * mprj_io[18]  ---                       ---                    user_analog[4]  clamp[0]
 * mprj_io[17]  ---                       ---                    user_analog[3]
 * mprj_io[16]  ---                       ---                    user_analog[2]
 * mprj_io[15]  ---                       ---                    user_analog[1]
 * mprj_io[14]  ---                       ---                    user_analog[0]
 * mprj_io[13]  io_in/out/oeb/in_3v3[13]  gpio_analog/noesd[6]   ---
 * mprj_io[12]  io_in/out/oeb/in_3v3[12]  gpio_analog/noesd[5]   ---
 * mprj_io[11]  io_in/out/oeb/in_3v3[11]  gpio_analog/noesd[4]   ---
 * mprj_io[10]  io_in/out/oeb/in_3v3[10]  gpio_analog/noesd[3]   ---
 * mprj_io[9]   io_in/out/oeb/in_3v3[9]   gpio_analog/noesd[2]   ---
 * mprj_io[8]   io_in/out/oeb/in_3v3[8]   gpio_analog/noesd[1]   ---
 * mprj_io[7]   io_in/out/oeb/in_3v3[7]   gpio_analog/noesd[0]   ---
 * mprj_io[6]   io_in/out/oeb/in_3v3[6]   ---                    ---
 * mprj_io[5]   io_in/out/oeb/in_3v3[5]   ---                    ---
 * mprj_io[4]   io_in/out/oeb/in_3v3[4]   ---                    ---
 * mprj_io[3]   io_in/out/oeb/in_3v3[3]   ---                    ---
 * mprj_io[2]   io_in/out/oeb/in_3v3[2]   ---                    ---
 * mprj_io[1]   io_in/out/oeb/in_3v3[1]   ---                    ---
 * mprj_io[0]   io_in/out/oeb/in_3v3[0]   ---                    ---
 *
 */
👍 1
Even that has some discrepancies in the names, but
io_analog[5]
in the analog pins maps to
mprj_io[19]
on the chip, according to the mapping above.
m
From in caravel there’s an
analog_io
connection but no
io_analog
nets.
verilog/rtl/user_project_wrapper.v
Copy code
// Analog (direct connection to GPIO pad---use with caution)
    // Note that analog I/O is not available on the 7 lowest-numbered
    // GPIO pads, and so the analog_io indexing is offset from the
    // GPIO indexing by 7 (also upper 2 GPIOs do not have analog_io).
    inout [`MPRJ_IO_PADS-10:0] analog_io,
Here
analog_io[5]
would correspond to gpio 12 or the same pad as
io_in[12]
. In caravan, there is an
io_analog
connection.
verilog/rtl/user_analog_project_wrapper.v
Copy code
/* Analog signals, direct through to pad.  These have no ESD at all,
     * so ESD protection is the responsibility of the designer.
     *
     * user_analog[10:0]  <--->  mprj_io[24:14]
     *
     */
    inout [`ANALOG_PADS-1:0] io_analog,
Here the
io_analog[5]
pad is in the same position as gpio 19, but it is not a gpio pad. There is no corresponding
io_in
.
s
@Mitch Bailey @Tim Edwards so as per the discussion above this mapping should be correct?
IMG_8233.jpg
m
That’s my understanding.
s
this is my understanding.I am not sure as i before used analog wrapper as reference design but later changed to digital wrapper, which has different mapping. also I assume pins like VSS, CLK , spi, uart, etc are all same in both wrapper@Tim Edwards @Mitch Bailey and only analog io pad has different PIN numbers?
m
@samarth jain replied in more detail in a private message. I believe that the pad positions for power ground are the same between caravel (digital) and caravan (analog). I don’t know if the power/ground connections to the user area are the same or note.