Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

modifying zturn_ztio unclear #77

Open
mhaberler opened this issue Aug 29, 2016 · 9 comments
Open

modifying zturn_ztio unclear #77

mhaberler opened this issue Aug 29, 2016 · 9 comments

Comments

@mhaberler
Copy link
Contributor

studying the zturn_ztio config:

Assuming I do not use the Camera, LCD, and ADC connectors I would have the following connectors available at the IO cape:

  • J5, J6, J7 with 8 pins each (page 6 1.1.4)
  • J3 with 36pins (page 3 1.1.1)

so a total of 60 pins

  • why only 34 pins?
  • what are the RATES pins? scoping the timers?
  • if I were to add the other 26 pins - can I do this just by editing the config files, or should I run the Vivado GUI for that? (if so, how?)
  • would I have to follow the IO cape schematic -> CN1/CN2 connector pins -> BGA balls for each of them, or is there some existing map that can be reused?

semi-related:

  • should we adapt hostmot2 with "uneven" connector widths?
  • would there be any value in reflecting the actual connector/pin number in the HAL name?
@dkhughes
Copy link
Contributor

why only 34 pins?

Two reasons:

  1. I'm lazy, 60 pins is a lot to call out and as a first example I wasn't sure about what features we need to demo. So, I pulled the most common peripherals and pinned them out as a 34 pin header which gave me a decent amount of each module and duplicates.
  2. The zturn board fpga is slightly more resource limited than say the microzed board, mostly due to pin choices which make the fitter pull buffers across sections. This is only a problem when you add a lot of features to hm2 though

what are the RATES pins? scoping the timers?

Yes, for scoping the dpll timer pins directly

if I were to add the other 26 pins - can I do this just by editing the config files, or should I run the Vivado GUI for that? (if so, how?)

would I have to follow the IO cape schematic -> CN1/CN2 connector pins -> BGA balls for each of them, or is there some existing map that can be reused?

Yes, I pulled the pins for the bga from the schematic they provided. In the hostmot2 PIN file comments the io carrier header pin is called out. I want to make a table of the choices, I just haven't had time.

should we adapt hostmot2 with "uneven" connector widths?
would there be any value in reflecting the actual connector/pin number in the HAL name?

I see no reason why you couldn't have an odd number of header pins, but the PIN files are all based on 144 pins in the vhdl descriptor. That's the only hard limit I've seen.

As for the driver, the hm2_soc_ol patch I submitted doesn't regulate the number of pins at the hal layer provided your firmware protobuf message has the correct amount. See machinekit/machinekit@5bda85e#diff-808b7a7bb9570ae3fe0ecd40f35dfcb9R427

@dkhughes
Copy link
Contributor

if I were to add the other 26 pins - can I do this just by editing the config files, or should I run the Vivado GUI for that? (if so, how?)

Oops, missed this one. You need to do a few things if you want to expand the number of pins exposed. If you just want to reconfigure within the 34 pin limit, you just update the PIN file and recompile without needing to touch the tools directly.

Until someone is comfortable with the generated config files, it's probably easiest to generate the necessary bits using the gui tools. Run the make_bitfile script on the project you want to work with, then open Vivado. Browse to the project_name_created directory and open the created project file. On the left side, click open block design and you will see the high level components it takes to build a zynq firmware.

To increase the ztio project to 60 pins:

  1. Increase the width of the IOBits io buffer at the top level. In the GUI, click on the IObits and then change the left setting to 59.
  2. Double click on the IO muxing component (in between the port and the hostmot2 instance in that project) and increase the width there accordingly.
  3. Double click on the hostmot2_ip_wrap instance and increase the width of the IO bus accordingly.
  4. Update your pin file to call out the 60 pins of functionality
  5. Update the constraint file to include the new IO bits and their respective BGA pins

Save, and the project should compile. All of the changes above, with the exception of the PINS and physical BGA constraints file, are temporary. To make them permanent, you would export the block diagram and diff it against the tcl file in the scripts folder that generates the block diagram. The generated scripts are specific to your machine, whereas the example scripts use relative directories. It's pretty straightforward to see the changes you need to accept versus the ones to leave out. I use a graphical diff for this (Meld).

After updating the script files, you can run make_bitfile and it will compile and generate the needed bitfiles for linux programming.

I will document all of this, and I want to make a screencast of what I described above to make a custom project, and to extend an existing project without wrecking an already existing config. I just need work to slow down a bit before I can make those, but it's on the way I promise.

@mhaberler
Copy link
Contributor Author

I kindof got this baked to the extent a bitfile is generated from this config

I think I got entangled in misinterpretation of how IDROM PortWidth, IOPorts, IOWidth, the llio values num_ioport_connectors + pins_per_connector, and the fwid struct interact

it went like this:

that bitfile doesnt load though:

...
ug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0: connector 0 name = 'U20'
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0: connector 0 pins = 4
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0: connector 1 name = 'J6'
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0: connector 1 pins = 8
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0: connector 2 name = 'J5'
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0: connector 2 pins = 8
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0: connector 3 name = 'J3'
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0: connector 3 pins = 36
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0: connector 4 name = 'J7'
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0: connector 4 pins = 8
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0: invalid IDROM PortWidth 16, this board has 4 pins per connector, aborting load (<-- suppress error exit here)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0: IDRom:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     IDRom Type: 0x00000003
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Offset to Modules: 0x00000040
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Offset to Pin Description: 0x000001C0
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Board Name: MYIRZTIO
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     FPGA Size: 8
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     FPGA Pins: 144
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Port Width: 16
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     IO Ports: 4
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     IO Width: 64
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Clock Low: 100000000 Hz (100000 KHz, 100 MHz)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Clock High: 200000000 Hz (200000 KHz, 200 MHz)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Instance Stride 0: 0x00000004
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Instance Stride 1: 0x00000040
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Register Stride 0: 0x00000100
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Register Stride 1: 0x00000100
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0: IDROM IOPorts is 4 but llio num_ioport_connectors is 5, driver and firmware are inconsistent, aborting driver load  (<-- suppress error exit here)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0: 64 HM2 Pin Descriptors:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 0:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 1:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 2:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 3:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 4:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x05 (StepGen)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x00
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x82 (Direction, Output)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 5:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x05 (StepGen)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x00
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x81 (Step, Output)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 6:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x05 (StepGen)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x01
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x82 (Direction, Output)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 7:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x05 (StepGen)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x01
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x81 (Step, Output)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 8:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x05 (StepGen)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x02
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x82 (Direction, Output)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 9:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x05 (StepGen)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x02
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x81 (Step, Output)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 10:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x05 (StepGen)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x03
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x82 (Direction, Output)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 11:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x05 (StepGen)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x03
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x81 (Step, Output)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 12:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x1A (Hostmot2 DPLL)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x00
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x82 (Ref Out Pin, Output)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 13:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x04 (Encoder)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x00
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x01 (A, Input)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 14:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x04 (Encoder)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x00
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x02 (B, Input)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 15:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x04 (Encoder)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x00
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x03 (Index, Input)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 16:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 17:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x06 (PWMGen)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x00
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x81 (Out0 (PWM or Up), Output)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 18:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x06 (PWMGen)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x01
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x81 (Out0 (PWM or Up), Output)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 19:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x06 (PWMGen)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x02
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x81 (Out0 (PWM or Up), Output)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 20:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x05 (StepGen)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x04
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x82 (Direction, Output)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 21:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x05 (StepGen)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x04
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x81 (Step, Output)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 22:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x05 (StepGen)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x05
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x82 (Direction, Output)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 23:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x05 (StepGen)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x05
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x81 (Step, Output)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 24:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x05 (StepGen)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x06
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x82 (Direction, Output)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 25:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x05 (StepGen)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x06
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x81 (Step, Output)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 26:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x05 (StepGen)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x07
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x82 (Direction, Output)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 27:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x05 (StepGen)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x07
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x81 (Step, Output)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 28:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 29:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x04 (Encoder)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x01
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x01 (A, Input)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 30:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x04 (Encoder)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x01
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x02 (B, Input)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 31:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x04 (Encoder)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x01
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x03 (Index, Input)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 32:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 33:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 34:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 35:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 36:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 37:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 38:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 39:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 40:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 41:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 42:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 43:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 44:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 45:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 46:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 47:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 48:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 49:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 50:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 51:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 52:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 53:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 54:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 55:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 56:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x13 (ThreePhasePWM)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x00
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x08 (Fault, Input)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 57:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x13 (ThreePhasePWM)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x00
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x87 (Enable, Output)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 58:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x13 (ThreePhasePWM)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x00
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x81 (PWM A, Output)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 59:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x13 (ThreePhasePWM)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x00
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x82 (PWM B, Output)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 60:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x13 (ThreePhasePWM)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x00
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x83 (PWM C, Output)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 61:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x13 (ThreePhasePWM)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x00
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x84 (PWM /A, Output)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 62:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x13 (ThreePhasePWM)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x00
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x85 (PWM /B, Output)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     pin 63:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Primary Tag: 0x03 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Tag: 0x13 (ThreePhasePWM)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Unit: 0x00
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:         Secondary Pin: 0x86 (PWM /C, Output)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0: Module Descriptor 0 at 0x0440:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     General Function Tag: 26 (Hostmot2 DPLL)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Version: 0
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Clock Tag: 1 (100.000 MHz)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Instances: 4
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Base Address: 0x7000
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     -- Num Registers: 7
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Register Stride: 0x00000100
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     -- Instance Stride: 0x00000004
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     -- Multiple Registers: 0x00000000
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0: Module Descriptor 1 at 0x044C:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     General Function Tag: 2 (Watchdog)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Version: 0
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Clock Tag: 1 (100.000 MHz)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Instances: 1
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Base Address: 0x0C00
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     -- Num Registers: 3
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Register Stride: 0x00000100
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     -- Instance Stride: 0x00000004
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     -- Multiple Registers: 0x00000000
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0: Module Descriptor 2 at 0x0458:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     General Function Tag: 3 (IOPort)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Version: 0
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Clock Tag: 1 (100.000 MHz)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Instances: 2
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Base Address: 0x1000
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     -- Num Registers: 5
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Register Stride: 0x00000100
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     -- Instance Stride: 0x00000004
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     -- Multiple Registers: 0x0000001F
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0: Module Descriptor 3 at 0x0464:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     General Function Tag: 4 (Encoder)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Version: 2
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Clock Tag: 1 (100.000 MHz)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Instances: 2
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Base Address: 0x3000
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     -- Num Registers: 5
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Register Stride: 0x00000100
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     -- Instance Stride: 0x00000004
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     -- Multiple Registers: 0x00000003
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0: Module Descriptor 4 at 0x0470:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     General Function Tag: 5 (StepGen)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Version: 2
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Clock Tag: 1 (100.000 MHz)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Instances: 8
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Base Address: 0x2000
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     -- Num Registers: 10
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Register Stride: 0x00000100
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     -- Instance Stride: 0x00000004
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     -- Multiple Registers: 0x000001FF
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0: Module Descriptor 5 at 0x047C:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     General Function Tag: 248 (Firmware ID)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Version: 0
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Clock Tag: 1 (100.000 MHz)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Instances: 1
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Base Address: 0xF800
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     -- Num Registers: 1
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Register Stride: 0x00000100
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     -- Instance Stride: 0x00000004
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     -- Multiple Registers: 0x00000000
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0: Module Descriptor 6 at 0x0488:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     General Function Tag: 6 (PWMGen)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Version: 0
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Clock Tag: 2 (200.000 MHz)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Instances: 3
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Base Address: 0x4000
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     -- Num Registers: 5
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Register Stride: 0x00000100
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     -- Instance Stride: 0x00000004
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     -- Multiple Registers: 0x00000003
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0: Module Descriptor 7 at 0x0494:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     General Function Tag: 128 (LED)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Version: 0
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Clock Tag: 1 (100.000 MHz)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Instances: 1
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Base Address: 0x0200
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     -- Num Registers: 1
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Register Stride: 0x00000100
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     -- Instance Stride: 0x00000004
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     -- Multiple Registers: 0x00000000
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0: Module Descriptor 8 at 0x04A0:
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     General Function Tag: 19 (ThreePhasePWM)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Version: 0
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Clock Tag: 2 (200.000 MHz)
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Instances: 2
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Base Address: 0x4500
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     -- Num Registers: 4
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     Register Stride: 0x00000100
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     -- Instance Stride: 0x00000004
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0:     -- Multiple Registers: 0x00000003
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0: IDROM IOPorts is 4 but MD IOPort NumInstances is 2, inconsistent firmware, aborting driver load
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0: failed to parse Module Descriptor 2
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2_ztio.0: hm2_soc_ol_board fails HM2 registration
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2_soc_ol: error registering UIO driver

where I think I went wrong is

I'm happy to teach fwid.c or hostmot2 in general to be more sensible with different-width connectors, but frankly I'm lost with the parameters :-/

@dkhughes
Copy link
Contributor

These parameters refer to the hostmot2 wrapper:

`CONFIG.IOPorts

The number of IO ports exposed by HM2. hostmot2 assumes all of the ports are even width.

`CONFIG.IOWidth

The total number of IO pins exposed (usually IOPorts * PortWidth)

`CONFIG.PortWidth

The width of an individual port

And this parameter is a member of the input output bus tristate component:

`CONFIG.WIDTH

The total width of the IOBits bus, should equal IOWidth

@dkhughes
Copy link
Contributor

dkhughes commented Aug 30, 2016

Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0: IDROM IOPorts is 4 but MD IOPort NumInstances is 2, inconsistent firmware, aborting driver load
Aug 30 13:06:18 mksocfpga msgd:0: hal_lib:11718:rt hm2/hm2_ztio.0: failed to parse Module Descriptor 2

This says your fwid message has a mismatch with the IDROM. Where is the fwid python file for this config at?

@dkhughes
Copy link
Contributor

Oh, the mismatch is in the PIN file here https://github.com/mhaberler/mksocfpga/blob/pins64/HW/VivadoProjects/zturn/zturn_ztio64/const/PIN_ZTIO_64.vhd#L80:

It should read:

 (IOPortTag,    x"00",  ClockLowTag,    x"04",  PortAddr&PadT,                  IOPortNumRegs,          x"00",  IOPortMPBitMask),

mhaberler pushed a commit to mhaberler/mksocfpga that referenced this issue Aug 30, 2016
@mhaberler
Copy link
Contributor Author

mhaberler commented Aug 30, 2016

@thanks, applied fix! loads now (still suppressing error exits)

(hopefully last) questions:

  • assuming 64pins and 3 Leds - CONFIG.IOWidth == CONFIG.WIDTH = 64 (or 67?)
  • assume 64pins - what is the impact of CONFIG.IOPorts=16 + CONFIG.IOPorts=4 vs say CONFIG.IOPorts=32 + CONFIG.IOPorts=2 (if any)? from reading the regmap it looks 1 I/O port register covers 24pins max?
0x1000  I/O port  0..23
0x1004  I/O port 24..47
0x1008  I/O port 48..71
0x100C  I/O port 72..95
0x1010  I/O port 96..127
0x1014  I/O port 128..143
  • assuming CONFIG.IOPorts=16 + CONFIG.IOPorts=4 - does this relate to the [connectors in the fwid message](CONFIG.IOPorts=16 + CONFIG.IOPorts=4) at all?

@dkhughes
Copy link
Contributor

LEDs are independent of the IO pins. So, to change the LED count, you adjust the CONFIG.NumLEDs(?) parameter, and then make that match in the fwid. For your example CONFIG.WIDTH = 64.

assume 64pins - what is the impact of CONFIG.IOPorts=16 + CONFIG.IOPorts=4 vs say CONFIG.IOPorts=32 + CONFIG.IOPorts=2 (if any)? from reading the regmap it looks 1 I/O port register covers 24pins max?

I thought the number of IO pins per port was limited to the bus width of the device, but the register map may disagree. For me, I would prefer 2 ports at 32 width because it saves reads/writes from the processor to fpga fabric (which is slow). But, if you're not controlling fast IO, it might not be an issue.

assuming CONFIG.IOPorts=16 + CONFIG.IOPorts=4 - does this relate to the connectors in the fwid message at all?

Yes it should. The number of ports in the fwid message should match the number of ports in the PIN file descriptor which is read in at run time, or the driver will fail because it needs to know how many IO ports it should expect for the hal config being loaded. Allocation of the proper address space (e.g., do I need 4 addresses or only 2 to talk to my outputs, etc.), I'm pretty sure is based off of the count of the IOPorts in the module descriptors. That means we could probably eliminate the IO mismatch guard and provided the correct firmware is loaded, it should work just fine. I like the config double check though, it's not much work and only happens at startup.

@dkhughes
Copy link
Contributor

Oh, btw, when you edit the config file directly, you need to account for the new pin connections. That's why I mentioned it is easier to use the GUI to generate a script you can then diff against the git commited command line script.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants