Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Locked thread
EIDE Van Hagar
Dec 8, 2000

Beep Boop

Barnyard Protein posted:

i guess this is as good as time to ask as any. how is chip level validation _supposed_ to work?

I get this basic idea: 1) Design reads <IP-SPEC> then implements <IP-RTL>. 2) Validation reads <IP-SPEC"> then tests "IP-RTL" against the spec.

how reasonable is it for design to make a mistake, then validation to make the identical mistake that results in the mis-configuration of entire modules?

Should validation have a black-box view of the RTL? Should validation have access to any of the definitions internal to the design?

you have to have access to actually debug things in pre-si, but a good pre-si validation strategy will include transaction level abstraction and throw a ton of transactions at a design using an implementation of the interfaces written with no reference to the RTL.

Adbot
ADBOT LOVES YOU

EIDE Van Hagar
Dec 8, 2000

Beep Boop

Awia posted:

or do all fpgas use special snowflake languages?
like i assumed there'd be a custom library and compiler for C or something

hahhaha

i have used thints designed in system c before and if you have ever wanted to not be able to debug something then that's the way to go.

EIDE Van Hagar
Dec 8, 2000

Beep Boop

Bloody posted:

they're good in that they're languages designed for describing hardware and logic but they're bad in that they're languages designed by people who have no place designing languages

vhdl: a language where everyone overloads the + operator out of the box because no thought went into designing it.

EIDE Van Hagar
Dec 8, 2000

Beep Boop

Bloody posted:

step one don't use vhdl use systemverilog or however much of sysv your toolchain supports

i was happy with mixed language environments until one time it didn't work right and i still have nightmares about it.

EIDE Van Hagar
Dec 8, 2000

Beep Boop
picture a vhdl testbench with a vhdl behavioral model of a mipi interface, and a DUT with 8 layers of hierarchy in vhdl before you get to the mipi phy rtl which is systemverilog and then you tuen on the vhdl mipi testbench and the boundary between the vhdl rtl and the sv rtl is not translating Xs or Zs correctly so it won't work at all and you file a bug with the simulator vendor and they say it won't be supported for two years and then you have to write a translation layer in BOTH languages that goes inside the DUT during simulation to make it work but you have to remove the translation layer for synthesis.

EIDE Van Hagar
Dec 8, 2000

Beep Boop

JawnV6 posted:

was 4value actually getting you anything besides pain

for my simulations no but for the analog people who would want to hook up a behavioral model in place of my vhdl bfm i think it was important for some analog reason i don't understand.

EIDE Van Hagar
Dec 8, 2000

Beep Boop

movax posted:

http://www.bloomberg.com/news/articles/2016-07-26/analog-devices-said-in-advanced-talks-to-buy-linear-technology

fuuuuuuuuuuuuck

i love ltc parts, i'm ehhh on ADI's stuff (outside of SDR)


many, many parts are gonna get EOL'd like a motherfucker

friend of mine works for motorola that spun off manufacturing to become freescale that was bought by NXP (which i think was a mfg spinoff of philips) and he complains a LOT about legacy stuff like every couple years fabbing 1 lot of devices for motorola cop radios from the 1970s that they signed a 50 year parts availability contract on, and running like 50 lots of a device thats gonna get EOLed so they can put them on a shelf and sell them for the next decade and other weird stuff like that

EIDE Van Hagar
Dec 8, 2000

Beep Boop

JawnV6 posted:

everything has hdmi out now, pls don't learn VGA

yeah i owned vga validation for two projects and now i will never un-learn it. don't do it.

EIDE Van Hagar
Dec 8, 2000

Beep Boop

Bloody posted:

how the heck do i hook my logic up to this ahb-lite (or APB3 or wishbone or) interface and what even is this? does this somehow turn into memory-mapped peripherals? how does this all work? i cant find much useful documentation

currently v curious about the z-scale riscv

idk what you are doing but you have to code an ahb interface for your logic to do mmio access like that if you are asking how to hook your logic to an ahb transactor or something

EIDE Van Hagar
Dec 8, 2000

Beep Boop
the arm website has good docs about how ahb works

https://www.arm.com/products/system-ip/amba-specifications.php

i have made various bridges between ahb/axi/ocp and proprietary protocols pm if you have specific questions. the specs are p good.

EIDE Van Hagar fucked around with this message at 02:49 on Aug 27, 2016

EIDE Van Hagar
Dec 8, 2000

Beep Boop

C.H.O.M.E posted:

idk what you are doing but you have to code an ahb interface for your logic to do mmio access like that if you are asking how to hook your logic to an ahb transactor or something

ahb lite is a single-master bus for mmio transactions, there is just one master and many slave devices. the master side has a select for each slave device, so you have an individual wire (not part of the bus with addr, data, etc) running directly to each slave (this is called like hsel or something iirc). You need to somehow set up the master (this should be in the docs for the master transactor) so that it knows the range of the mmio stuff you want to exist in your slave device, and then when it sees an address in that range, it should pulse the hsel wire to that device.

when a slave device on the bus sees its hsel wire go high, it should look at the address and command signals on the bus and decode them to do whatever (read, write, etc) it needs to do in the logic. you have to configure the ahb master to know what the range of your device is, and then write a slave interface for your device that will look at the address and get that device.

there is an address phase and a data phase,

pseudo verilog decode logic for your slave device would looks something like this:

code:

if (hsel == 1) 
  unique case (addr)
    0x4: register_A_hit = 1;
    0x8: register_B_hit = 1;
    0xC: register_C_hit = 1;
  endcase
endif
to generate a "hit" signal for each register, if register A is at offset 0x4, B at offset 0x8, etc

there are separate channels for read and write data, so you just have to decode the command to see if it is a read or write, then just get the value from the bus (hwdata) and put it in your register if it is a write, or get the value from the reg and put it on the bus (hrdata) in the next cycle if it is a read. This is the diagram ARM provides in their spec:



That diagram doesn't have the command signal, but it would go along the hwdata and haddr signals into the slave, and the slave should just ignore any commands unless hsel is decoded and sent to it. This way you can use the upper bits to decode which slave to send to, and then each slave only has to look at its lower bits to understand which register you are trying to see. that is, the slave onlu knows about registers being at addresses 0x0, 0x4, 0x8 and 0xC, but the system as a whole might put slave 1 at 0x0010_0000, slave 2 at 0x0020_0000, and then strip the upper bits off before it goes to the slave. So the master would request 0x0010_0004 and 0x0020_0008, and slave 1 would see only hsel==1 and a request for 0x4, and slave 2 would see hsel and a request for 0x8. that way you can write the slaves to all have addresses starting from zero and use the higher order bits to pick which mmio device to send the request to.

There are also some other performance features like burst transactions, i think

AHB (not lite) is more complicated because you can have multiple bus masters. AXI is even more complicated and has a lot of optional features for performance and ECC and so on.

EDIT: you might have to write that decoder for the higher order bits and to send the hsel stuff to your slave interface yourself, i am not sure what your transactor has. If it acts only as the master you might have to write the decode logic, if it assumes you want to just quickly hook up some slaves and it has the decoder in that diagram built in, might be able to just set the number of HSEL wires (number of slaves) and their address ranges with parameters or something, idk.

EIDE Van Hagar fucked around with this message at 21:54 on Aug 17, 2016

Adbot
ADBOT LOVES YOU

EIDE Van Hagar
Dec 8, 2000

Beep Boop

BobHoward posted:

idk about the rest but the answer to the last is that forth dudes are weird and super dedicated to doing everything in forth and insisting that no, your fancy modern technology is worthless next to the glory of forth

that green chips thing and the earlier forth chips like the mup21? designed by chuck moore (the deity of the forth world) in eda software he wrote himself, in forth, on what amounts to an os he wrote himself, in forth. it's almost like the losethos guy except there's more of them, their religious obsession is forth, there isn't any overt racism or other horrible stuff, and they're actually rather shockingly competent engineers, some being legit geniuses. just geniuses who are obsessed with forth.

i guess my analogy is bad because they're not really much like losethos guy except in one narrow way, devotion to near total rejection of technology developed outside the weird niche/bubble they've created for themselves

yosposter gazpacho has written up a couple trip reports from attending some of the yearly silicon valley meet ups of the fortherati, he can probably be more informative

had an ion implanted that ran on forth at my last job. the support engineers were exactly like this.

  • Locked thread