% render "layouts/basic.html" do %# HTML tags can be embedded in mark down files if you want to do specific custom %# formatting like this, but in most cases that is not required.

<%= Origen.app.namespace %> (<%= Origen.app.version %>)

### Purpose This plugin implements SPI protocol with the tester acting as the master. There are 4 pins standard to SPI, however only sclk is required by this plugin. Any pins that aren't provided are ignored. This plugin seeks to be very flexible given that the SPI standard is itself very flexible. ### How To Install In your Gemfile add: ~~~ruby gem "<%= Origen.app.name %>" ~~~ or if your application is a plugin, then add this to your .gemspec ~~~ruby spec.add_runtime_dependency "<%= Origen.app.name %>", ">= <%= Origen.app.version %>" ~~~ __NOTE:__ In the case of a plugin, you will also need to require '<%= Origen.app.name %>' somewhere in your environment. ### How To Use The spi driver is intended to be instantiated as a sub_block. The configuration can be passed in as a hash and / or can be changed after instantiation. See API for more details. ~~~ruby sub_block :spi, class_name: 'OrigenSpi::Driver', sclk_pin: dut.pin(:sclk), mosi_pin: dut.pin(:mosi), miso_pin: dut.pin(:miso), ss_pin: dut.pin(:ss), # :rl - return low - input data changes while sclk is low and is latched on rising edge clk_format: :rl, # drive state of 0 activates the slave port ss_active: 0, # wait time after ss_active and before any sclk activity clk_wait_time: {time_in_cycles: 2}, # number of sclks per tester.cycle clk_multiple: 1, data_order: :lsb0 ~~~ ~~~ruby # configuration can be changed after instantiation like this dut.spi.clk_multiple = 80 dut.spi.miso_compare_cycle = 79 dut.spi.ss_pin = nil ~~~ ### How To Setup a Development Environment To setup a development environment: ~~~ git clone https://github.com/Origen-SDK/origen_spi.git ~~~ % end