Announcement

Collapse
No announcement yet.

PCB Stack Impedance issue

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • robertferanec
    replied
    I am not sure. I do not use latest MFG tools. I use this: http://www.imx6rex.com/open-rex/soft...setup-mfgtool/

    Leave a comment:


  • huypq6
    replied
    i got the pcb.
    Now, i have trouble while debug it. I used Mfg tool from NXP.
    when i upload uboot into kit, i received error about initializing memory. Below is MFG log and config. Pls, give me some advice in this case.

    MFG log
    Code:
    DLL version: 2.6.2
    Friday, June 30, 2017 10:22:44   Start new logging
    ModuleID[2] LevelID[10]: CMyExceptionHandler thread is running
    ModuleID[2] LevelID[1]: new MxHidDeviceClass
    ModuleID[2] LevelID[10]: new MxHidDevice[04718FB8]
    ModuleID[2] LevelID[1]: new MxHidDeviceClass
    ModuleID[2] LevelID[10]: new MxHidDevice[04719488]
    ModuleID[2] LevelID[1]: new MxHidDeviceClass
    ModuleID[2] LevelID[10]: new MxHidDevice[047BF6D8]
    ModuleID[2] LevelID[1]: new MxHidDeviceClass
    ModuleID[2] LevelID[10]: new MxHidDevice[04819050]
    ModuleID[2] LevelID[1]: new MxHidDeviceClass
    ModuleID[2] LevelID[10]: new MxHidDevice[04842A38]
    ModuleID[2] LevelID[1]: new MxHidDeviceClass
    ModuleID[2] LevelID[10]: new MxHidDevice[0483D730]
    ModuleID[2] LevelID[10]: Device Manager thread is running
    ModuleID[2] LevelID[1]: Can't set m_hStopEvent before it initialized or it already stop
    
    ModuleID[2] LevelID[10]: CmdOperation[0] device chagned and reset to state 0
    ModuleID[2] LevelID[10]: CmdOperation[0], skip current command, so SetEvent(hDevCanDeleteEvent)
    ModuleID[2] LevelID[10]: CmdOperation[0], skip current command, so SetEvent(hDevCanDeleteEvent)
    ModuleID[2] LevelID[10]: CmdOperation[0], skip current command, so SetEvent(hDevCanDeleteEvent)
    ModuleID[2] LevelID[10]: CmdOperation[0], skip current command, so SetEvent(hDevCanDeleteEvent)
    ModuleID[2] LevelID[10]: CmdOperation[0], skip current command, so SetEvent(hDevCanDeleteEvent)
    ModuleID[2] LevelID[10]: ExecuteCommand--Boot[WndIndex:0], File is C:\Users\Huypq6\Downloads\L4.1.15_1.0.0_ga-mfg-tools.tar\L4.1.15-1.0.0_ga-mfg-tools\mfgtools\Profiles\Linux\OS Firmware\firmware\u-boot-imx6ul14x14ddr3arm2_sd.imx
    ModuleID[2] LevelID[1]: MxHidDevice::Write() Error writing to device 0x1f.
    ModuleID[2] LevelID[1]: Failed to initialize memory!
    ModuleID[2] LevelID[1]: PortMgrDlg(0)--MxHidDevice--Command Boot excute failed
    ModuleID[2] LevelID[10]: CmdOperation[0], current command executed failed, so SetEvent(hDevCanDeleteEvent)
    ModuleID[2] LevelID[10]: ExecuteCommand--Boot[WndIndex:0], File is C:\Users\Huypq6\Downloads\L4.1.15_1.0.0_ga-mfg-tools.tar\L4.1.15-1.0.0_ga-mfg-tools\mfgtools\Profiles\Linux\OS Firmware\firmware\u-boot-imx6ul14x14ddr3arm2_sd.imx
    ModuleID[2] LevelID[1]: MxHidDevice::Write() Error writing to device 0x1f.
    ModuleID[2] LevelID[1]: Failed to initialize memory!
    ModuleID[2] LevelID[1]: PortMgrDlg(0)--MxHidDevice--Command Boot excute failed
    ModuleID[2] LevelID[10]: CmdOperation[0], current command executed failed, so SetEvent(hDevCanDeleteEvent)
    ModuleID[2] LevelID[10]: ExecuteCommand--Boot[WndIndex:0], File is C:\Users\Huypq6\Downloads\L4.1.15_1.0.0_ga-mfg-tools.tar\L4.1.15-1.0.0_ga-mfg-tools\mfgtools\Profiles\Linux\OS Firmware\firmware\u-boot-imx6ul14x14ddr3arm2_sd.imx
    ModuleID[2] LevelID[1]: MxHidDevice::Write() Error writing to device 0x1f.
    ModuleID[2] LevelID[1]: Failed to initialize memory!
    ModuleID[2] LevelID[1]: PortMgrDlg(0)--MxHidDevice--Command Boot excute failed
    ModuleID[2] LevelID[10]: CmdOperation[0], current command executed failed, so SetEvent(hDevCanDeleteEvent)
    ModuleID[2] LevelID[10]: ExecuteCommand--Boot[WndIndex:0], File is C:\Users\Huypq6\Downloads\L4.1.15_1.0.0_ga-mfg-tools.tar\L4.1.15-1.0.0_ga-mfg-tools\mfgtools\Profiles\Linux\OS Firmware\firmware\u-boot-imx6ul14x14ddr3arm2_sd.imx
    ModuleID[2] LevelID[1]: MxHidDevice::Write() Error writing to device 0x1f.
    ModuleID[2] LevelID[1]: Failed to initialize memory!
    ModuleID[2] LevelID[1]: PortMgrDlg(0)--MxHidDevice--Command Boot excute failed
    ModuleID[2] LevelID[10]: CmdOperation[0], current command executed failed, so SetEvent(hDevCanDeleteEvent)
    ModuleID[2] LevelID[10]: DeviceManager::DevChangeWnd::OnDeviceChange() - DEVICE_REMOVAL_EVT(\\?\USB#VID_15A2&PID_007D#6&106a4439&0&2#{a5dcbf10-6530-11d2-901f-00c04fb951ed})
    ModuleID[2] LevelID[10]: DeviceManager::DevChangeWnd::OnDeviceChange() - end
    ModuleID[2] LevelID[10]: DeviceManager::OnMsgDeviceEvent() - DEVICE_REMOVAL_EVT(\\?\USB#VID_15A2&PID_007D#6&106a4439&0&2#{a5dcbf10-6530-11d2-901f-00c04fb951ed})
    ModuleID[2] LevelID[10]: DeviceClass::FindDeviceByUsbPath--DeviceListType_Current, _devices.size: 1
    ModuleID[2] LevelID[10]: DeviceClass::FindDeviceByUsbPath--DeviceListType_Current, devInstPathToFind: USB\VID_15A2&PID_007D\6&106A4439&0&2, _deviceInstanceID: USB\VID_15A2&PID_007D\6&106A4439&0&2
    ModuleID[2] LevelID[10]: DeviceClass::FindDeviceByUsbPath--DeviceListType_Current, Find the device
    ModuleID[2] LevelID[10]: DeviceManager::OnMsgDeviceEvent() - DEVICE_REMOVAL_EVT,[MxHidDeviceClass] vid_15a2&pid_007d, Hub:6-Port:2
    ModuleID[2] LevelID[10]: DeviceManager::OnMsgDeviceEvent() - DEVICE_REMOVAL_EVT, Notify
    ModuleID[2] LevelID[10]: CmdOpreation[0]--OnDeviceChangeNotify, Volume Arrive/Remove or Device Arrive/Remove
    ModuleID[2] LevelID[10]: CmdOpreation[0]--OnDeviceChangeNotify, m_p_usb_port is not NULL, so only refresh
    ModuleID[2] LevelID[10]: CmdOpreation[0]--OnDeviceChangeNotify, Volume/Device Remove
    ModuleID[2] LevelID[1]: CmdOpreation[0]--set m_hDeviceRemoveEvent.
    ModuleID[2] LevelID[10]: CmdOpreation[0]--WaitforEvents device remove1
    ModuleID[2] LevelID[10]: DeviceManager::OnMsgDeviceEvent()-DEVICE_REMOVAL_EVT, hDevCanDeleteEvent has been set
    ModuleID[2] LevelID[10]: delete MxHidDevice[0483D730]
    MFG config
    Code:
    [profiles]
    chip = Linux
    
    [platform]
    board = SabreSD[LIST]
    name = SDCard
    
    [variable]
    board = sabresd
    mmc = 0
    sxuboot=sabresd
    sxdtb=sdb
    7duboot=sabresd
    7ddtb=sdb
    6uluboot=14x14ddr3arm2
    6uldtb=14x14-ddr3-arm2
    ldo=
    plus=
    initramfs=fsl-image-mfgtool-initramfs-imx_mfgtools.cpio.gz.u-boot
    seek = 1
    sxnor=qspi2
    7dnor=qspi1
    6ulnor=qspi1
    nor_part=0

    Leave a comment:


  • huypq6
    replied
    robertferanec Thank you, I worked with 8 layers.

    Leave a comment:


  • robertferanec
    replied
    6 layers could help. Be sure you know track geometry on top and bottom layer for all the impedances you need. Double check the stackup and impedances with your PCB manufacturer.

    Leave a comment:


  • huypq6
    replied
    Thank you mairomaster and robertferanec,
    Exactly, the reference layout is 4 layers. I checked reference layout and reference design and i did not find some decoupling capacitor such C101, C102. I guest that it was be removed.

    This is my very first high speed design. So that i will try to route with 6 layers PCB. Base on robertferanec 's guide in his course, I define my PCB stack like attachment.

    Do you have any comment for my further work?
    Attached Files
    Last edited by huypq6; 03-30-2017, 08:33 PM.

    Leave a comment:


  • robertferanec
    replied
    I agree with mairomaster.

    PS: This iMX6UL design confused a lot of people. If you would like to use POWER as a reference plane, be sure there are a lot of decoupling capacitors between the plane and GND and also be sure this plane is above all the memory tracks.

    Leave a comment:


  • mairomaster
    replied
    You definitely need impedance control on all layers where you are routing DDR3 signals. L4 will normally use the L3 power layer as a reference, so you should be having the same track parameters.

    Despite the reference design for iMX6UL from NXP being done on 4 layers (if I remember correctly), this puts some limitations on what you can do on the board and will be quite challenging as well, if you don't have much experience designing such boards.

    Leave a comment:


  • huypq6
    started a topic PCB Stack Impedance issue

    PCB Stack Impedance issue

    Hi there,
    I am preparing to design an iMX6UL development kit.
    My PCB stack is 4 layer.

    L1 (signal)
    L2 (GND)
    L3 (POWER)
    L4 (signal)

    Should i have to control impedance on both of layer when routing DDR3? Assume that the track what has 50Ohm impedance in layer 1 is 0.12 mm width, but 0.12mm track is not 50Ohm impedance in layer 4. So that what will i have problem if i route 0.12mm track for DDR3 signal in layer 4?

    Thank you for your help!
Working...
X