com.miolab.junk.test::shobon::article20050717140905

Sun, 17 Jul 2005

shobon-JTAG ¤Ë¿·¤·¤¤¥Í¥Ã¥È¥ê¥¹¥È¥ê¡¼¥À¡©¤òÄɲ乤ëÎã

shobon-JTAG ¤Ï¡¢Æ°ºî¾õÂÖ¡¢¤¢¤ë¤¤¤ÏÆâÉô²óÏ©¤ÈÀÚ¤êÎ¥¤·¤¿¾õÂ֤ǡ¢FPGA,CPLD Åù¤Î JTAG ¥Ð¥¦¥ó¥À¥ê¥¹¥­¥ã¥ó(IEEE 1149.1)Âбþ¥Ç¥Ð¥¤¥¹¤Î¥Ô¥ó¤Î¿®¹æ¥ì¥Ù¥ë¤ò¥â¥Ë¥¿¤¹¤ë¤¿¤á¤Î¥½¥Õ¥È¤Ç¤¹¡£

¥À¥¦¥ó¥í¡¼¥É¡¢ChangeLog Åù¤Ï¤³¤Á¤é¤Î¥¨¥ó¥È¥ê¤«¤é¤É¤¦¤¾¡£

¤µ¤Æ¡¢¼ÂºÝ¤Ë¿·¤·¤¤¥Ç¥Ð¥¤¥¹¤òÄɲ䷤Ƥ⡢¿®¹æ̾¾ÎÍ󤬥ǥХ¤¥¹¤ÎIO_xx ¤Ê¤ó¤È¤«¤Ç¤Ï¤Ê¤ó¤Î¿®¹æ¤ò¤ß¤Æ¤¤¤ë¤Î¤ä¤é¤ï¤«¤ê¤Þ¤»¤ó¡£

¸½ºß(2005.7.16)¡¢²óÏ©¿Þ¥Õ¥¡¥¤¥ë¤«¤é¤Î¿®¹æ̾¾Î¤ÎÆɤ߼è¤ê¤Ï¡¢D2CAD¤¬½ÐÎϤ¹¤ë Mentor ·Á¼°¤Î¥Í¥Ã¥È¥ê¥¹¥È½ÐÎϤò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡Êñ¤Ë¾ðÊó¤ò¼è¤ê½Ð¤·¤ä¤¹¤¤¤«¤é¡Ë¤¬¡¢D2CAD ¤ò»ÈÍѤ·¤Æ²óÏ©¤ò½ñ¤¤¤Æ¤¤¤ëÊý¤Ð¤«¤ê¤Ç¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¤·¡¢FPGA ¤Î¥Ö¥ì¥Ã¥É¥Ü¡¼¥É¤ÇÍ·¤ó¤Ç¤¤¤ëËͤ餬¥Ö¥ì¥Ã¥É¥Ü¡¼¥É¤ÎCAD¥Ç¡¼¥¿¤ä¥Í¥Ã¥È¥ê¥¹¥È¤ò»ý¤Ã¤Æ¤¤¤ë¤ï¤±¤â¤¢¤ê¤Þ¤»¤ó¡£

¤½¤³¤Ç¡¢¤³¤³¤Ç¤Ï Xilinx ¤Î̵ÎÁ³«È¯´Ä¶­ WebPack6 ¤Ç»ÈÍѤµ¤ì¤Æ¤¤¤ë UserConstraint¥Õ¥¡¥¤¥ë¡©(.ucf)¤Î¥ê¡¼¥À¤ò shobon-JTAG ¤ËÄɲ乤뤳¤È¤Ç¡¢FPGA ¤Î³«È¯´Ä¶­¤Ç»ÈÍѤ·¤¿¿®¹æ̾¾Î¤ò shobon-JTAG ¤ÇÍøÍѤǤ­¤ë¤è¤¦¤Ë²þ¤¤·¤Æ¤ß¤¿Îã¤òµó¤²¡¢¼«Ê¬¤ÎÉáÃʻȤäƤ¤¤ë³«È¯´Ä¶­¤¬À¸À®¤¹¤ë¥Ô¥ó¡¦¿®¹æ̾¾Î¥Õ¥¡¥¤¥ë¡ÊConstraint ¥Õ¥¡¥¤¥ë¡Ë¤ÎÆɤ߼è¤êµ¡Ç½¤ò shobon-JTAG ¤ËÄɲ乤ë¤Ë¤Ï¤É¤Î¤è¤¦¤Ë¤¹¤ì¤Ð¤¤¤¤¤«¤ò¤´ÀâÌÀ¤·¤Þ¤¹¡£

£±¡Ëshobon-JTAG ¤Î¥×¥í¥¸¥§¥¯¥È¤Î²ô¤ò¤³¤³¤«¤éÍî¤È¤·¤Æ¡¢VisualStudio.NET ¤Ç³«¤­¤Þ¤¹¡£

£²¡Ëshobon-JTAG ¤Ç¥Ô¥ó̾¾Î¡Ê¥Í¥Ã¥È̾¾Î¡Ë¤òÆɤ߼è¤ê¤¿¤¤¾ðÊó¥Õ¥¡¥¤¥ë¡¢º£²ó¤Ïsample.ucf¤ò»²¹Í¤Ë¤·¤Þ¤·¤¿¡£WebPack6 ¤Ç»ÈÍѤ·¤Æ¤¤¤ë¤â¤Î¤Ç¤¹¡£¤Þ¤º¤¶¤Ã¤Èį¤á¤Æ¤ß¤Þ¤¹¡£


#PACE: Start of PACE I/O Pin Assignments
...
NET "CPLD_XXXX"  LOC = "P13"  ;
...
#

£³¡Ë¤Ê¤ó¤È¤Ê¤¯¼¡¤Î¤³¤È¤¬¿ä¬¤Ç¤­¤Þ¤·¤¿¡£

A) ¹Ô¤¬ NET ¤Ç»Ï¤Þ¤Ã¤Æ¤¤¤ë¡£
B) ¿®¹æ̾¾Î¤¬ 2 ÈÖÌܤΥȡ¼¥¯¥ó¡£¥À¥Ö¥ë¥¯¥ª¡¼¥È¤Ç°Ï¤Þ¤ì¤Æ¤¤¤ë¡£
C) ¥Ô¥ó̾¾Î¤¬ LOC = ¤Ë³¤¯ 5 ÈÖÌܤΥȡ¼¥¯¥ó¡£¥À¥Ö¥ë¥¯¥ª¡¼¥È¤Ç°Ï¤Þ¤ì¤Æ¤¤¤ë¡£¤Þ¤¿Æ¬¤Ë P ¤¬¤Ä¤¤¤Æ¤¤¤ë¡ÊÌÌÅݤǤ¹¤Í¡Ë¡£
D) ¥³¥á¥ó¥È¹Ô¤Ï # ¤Ç»Ï¤Þ¤Ã¤Æ¤¤¤ë¡£

£´¡ËMentor ¥Í¥Ã¥È¥ê¥¹¥È¤Ë»÷¤Æ¤¤¤ë¤Î¤Ç¡¢¤¹¤Ç¤Ë shobon-JTAG ¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë TinyNetMentor.cs ¥¯¥é¥¹¤ò²þ¤¤·¤ÆÄɲ䷤Ƥߤޤ¹¡£

£µ¡ËTinyNetMentor.cs ¤ò VS.NET ¤ÎÅý¹ç´Ä¶­¤Î¥½¥ê¥å¡¼¥·¥ç¥ó¥¨¥¯¥¹¥×¥í¡¼¥é¤Ç¥³¥Ô¡¼¤·¤Æ¡¢Ì¾¾Î¤ò TinyUcf.cs ¤ËÊѹ¹¤·¤Þ¤¹¡£

£¶¡Ë¥¯¥é¥¹Ì¾¡¢¥³¥ó¥¹¥È¥é¥¯¥¿¤ò TinyUcf ¤ËÊѹ¹¤·¤Þ¤¹¡£

£·¡Ë¼ÂºÝ¤Î£±¹Ô²ò¼á¤Ï


private void create_PIN_MAP(StreamReader sr,string chipname)

¤Ç¤¹¡£¤³¤ÎÃæ¤À¤±Êѹ¹¤¹¤ì¤Ð¤¤¤¤¤Ç¤·¤ç¤¦¡£ ²þ¤ÅÀ¤Ï


A¡Ëchipname ¤Ïº£²ó¤ÏɬÍפʤ¤¤Î¤Ç´ØÏ¢¥³¡¼¥ÉÁ´ºï½ü¡Ê²óÏ©¿Þ¥Í¥Ã¥È¥ê¥¹¥È¤Ç¤Ê¤¤¤Î¤Ç¡Ë¡£
B¡Ë¥»¥Ñ¥ì¡¼¥¿¤ò¥¹¥Ú¡¼¥¹¤È²¾Äꤹ¤ë¡£¿®¹æ̾¾Î¡¢¥Ô¥ó̾¾Î¤Ë¥¹¥Ú¡¼¥¹¤¬¤¢¤ë¤È¸íÆ°ºî¤·¤Þ¤¹¤¬¡¢º£²ó¤ÏÎã¤Ê¤Î¤Ç¤Û¤Ã¤È¤­¤Þ¤·¤ç¤¦¡£
C¡Ë¿®¹æ̾¾Î¤Î¹ÔÃæ¤Î°ÌÃÖ¡¢¥Ñ¥é¥á¡¼¥¿Ãæ¤Î¼è¤ê½Ð¤·²Õ½ê¤ò°Ê²¼¤Î¤è¤¦¤Ë²¾Äê¡Ê¤à¤ê¤ä¤ê¡Ë¡£

// ̾Á°¤Ï£²ÈÖÌÜ¡££±¥­¥ã¥é¥¯¥¿ÌܤȺǽª¥­¥ã¥é¥¯¥¿¤Ï¥À¥Ö¥ë¥¯¥ª¡¼¥È¤Ê¤Î¤Ç̵»ë
name = param[1].Substring(1,param[1].Length - 2) ;
// ¥Ô¥ó¤Ï£µÈÖÌÜ¡££±¥­¥ã¥é¥¯¥¿ÌܤȺǽª¥­¥ã¥é¥¯¥¿¤Ï¥À¥Ö¥ë¥¯¥ª¡¼¥È¤Ê¤Î¤Ç̵»ë¡¢
// ¥Ô¥ó̾¾Î£²¥­¥ã¥é¥¯¥¿ÌܤΠ'P' ¤â¥¸¥ã¥Þ¤½¤¦¤Ê¤Î¤Çº£²ó̵»ë¡£
// BGA ¤È¤«¤ÇÌäÂ꤬¤Ç¤½¤¦¤À(w
pin  = param[4].Substring(2,param[4].Length - 3) ;
//Console.WriteLine("pin["+pin+"]="+name) ;
pinmap.Add(pin,name) ;			

£¸¡Ë¤µ¤Æ¡¢shobon-JTAG ¤Ë¤Õ¤µ¤ï¤·¤¤(¡¦¦Ø¡¦¡Ë¤Ê¥ê¡¼¥À¤¬¤Ç¤­¤Þ¤·¤¿¡£

£¹¡ËListView ¤Î¥á¥Ë¥å¡¼¤ËÁȤ߹þ¤ó¤Ç¤ß¤Þ¤¹¡£ViewForm.cs[¥Ç¥¶¥¤¥ó] ¤ò³«¤­¡¢contextMenu1 ¤Î¥·¥ç¡¼¥È¥«¥Ã¥È¥á¥Ë¥å¡¼ÊÔ½¸¤Ë "Read Pin-Name Info from Xilinx UCF (shobon-parser)" ¤òÄɲá£

£±£°¡Ë¥À¥Ö¥ë¥¯¥ê¥Ã¥¯¤Ç¥Ï¥ó¥É¥é¤òºî¤ê¡¢Ãæ¿È¤ò Mentor ¤Î¤È¤³¤«¤é¥³¥Ô¡¼¤·¤Æ¤­¤Æ¡¢°Ê²¼¤Î¤è¤¦¤ËÊÔ½¸¤·¤Þ¤¹¡£chipname ÆþÎÏ¥À¥¤¥¢¥í¥°´ØÏ¢¤Ï¤¤¤é¤Ê¤¤¤Î¤Ç¡¢ºï¤ê¤Þ¤¹¡£
¤½¤ì¤Ë¤·¤Æ¤â¡¢¥ê¡¼¥À¤Ç P ¤ò̵»ë¤·¤Æ¡¢¤³¤Ã¤Á¤Ç¤Ï P ¤ò¤¯¤Ã¤Ä¤±¤ë¤Ê¤ó¤Æ¡¢¤Û¤ó¤È¤¦¤Ë¡Ê¡¦¦Ø¡¦¡Ë¤Ç¤¹¤Í¡£


private void menuItem12_Click(object sender, System.EventArgs e) 
{
  // NETLIST ¥Õ¥¡¥¤¥ë¤Î¥ª¡¼¥×¥ó
  openFileDialog3.Title = "Open Xilinx UCF File" ;
  openFileDialog3.Filter = "Xilinx UCF File (*.ucf)|*.ucf|All File|*.*" ;
  openFileDialog3.DefaultExt = "*.ucf" ;

  // NETLIST ¥Õ¥¡¥¤¥ë¤Î¥ª¡¼¥×¥ó
  if (openFileDialog3.ShowDialog() == DialogResult.OK) {
    // NETLIST ¥ê¡¼¥À¤òµ¯Æ°
    TinyUcf tn= new TinyUcf() ;
    if (tn.readFile(openFileDialog3.FileName) < 0) {
      MessageBox.Show("UCF Parser Abnormally Terminated.","Error") ;
      return ;
    }

    // ¥Ô¥ó¤È NET ̾¾Î¤ÎÂбþɽ¤òÆÀ¤ë
    StringDictionary sd = tn.getPinmap() ;

    // ¤³¤ì¤¬¤¢¤ë¤ÈÄɲä˻þ´Ö¤¬¤«¤«¤ë
    listView1.ListViewItemSorter = null ;

    // ¥Ô¥óÈ֤Ǽ­½ñ¤ò°ú¤­¡¢Âбþ¤¹¤ë NET ̾¾Î¤¬¤¢¤ë¤«Ä´¤Ù¤ë
    for (int i=0;i¡ãlistView1.Items.Count;i++) { // ¥³¥Ô¥Ú¤Î¤È¤­¤Ï ¡ã ¤ò < ¤ËÃÖ¤­´¹¤¨¤Æ¤Í - wikideitish ¤Ç¡ã¤¬¤¦¤Þ¤¯°·¤¨¤Ê¤¤¤¿¤á(^^;
      ListViewItem lvi = listView1.Items[i] ;
      PinItem pi = lvi.Tag as PinItem ;
      if (pi != null) {
	string netname = sd[pi.pinno] ;
	
	// °ú¤±¤Ê¤¤¤È¤­¤ÏÀèƬ¤Î'P'¤ò̵»ë¤·¤Æ¸¡º÷¡Ê¥¤¥«¥µ¥Þ¡Ë
	if ((netname == null) && (pi.pinno[0] == 'P')){
	  netname = sd[pi.pinno.Substring(1)] ;
	}

	if (netname != null) {
	  // NET ̾¾Î¤ò¾å½ñ¤­
	  pi.usertag = netname ;
	  listView1.Items[i] = pi.getListViewItem() ;
	}
      }
    }
  }				
}
£±£±¡Ë¤Ç¤Ï¡¢¼ÂºÝ¤ËÆɤá¤ë¤«¤É¤¦¤«»î¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
Device ¤òÁªÂò¡¢¤Þ¤º ListView ¤Ë BSDL ¤Î¥Ô¥ó¾ðÊó¤òÆɤߤޤ¹¡£º£²ó¤Ï XC95144_PQ160 ¤Î¥³¥ó¥¹¥È¥ì¥¤¥ó¥È¥Õ¥¡¥¤¥ë¤ò»È¤¦¤Î¤Ç¡¢XC95144 ¤Î BSDL ¤«¡¢.vfd ¥Õ¥¡¥¤¥ë¤Ç¤¹¡£

£±£²¡Ë¼¡¤Ëº£ 10) ¤ÇºîÀ®¤·¤¿¥á¥Ë¥å¡¼¤Çº£²ó»²¹Í¤Ë¤·¤¿¥Õ¥¡¥¤¥ë sample.ucf ¤Ç»î¤·¤Æ¤ß¤Þ¤¹¡£¤Ê¤ó¤«Æɤá¤Æ¤ë¤è¤¦¤Ç¤¹(¡¦¢Ï¡¦¡Ë¡ª¡ª¡£

£±£³¡Ëº£²ó¤Î sample.ucf ¤ÏÆɤá¤Þ¤·¤¿¤¬¡¢Å¬Åö¤Êºî¤ê¤«¤é¤ï¤«¤ë¤è¤¦¤ËÅöÁ³¤Ê¤¬¤é¤¤¤Ä¤â¤¦¤Þ¤¯¤¤¤¯¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£
WebPack ¤Î¥Ð¡¼¥¸¥ç¥ó¤¬°ã¤Ã¤Æ¤¤¤¿¤ê¡¢¥Ô¥óÈÖ¤Ë "P" ¤¬¤Ê¤«¤Ã¤¿¤ê¡¢¤Þ¤¿ .ucf ¤Ë¥Ô¥ó°Ê³°¤ÎÀ©Ìó¾ò·ï¤¬¤¢¤ë¤È¡¢¸íÆ°ºî¤¹¤ë¤Ç¤·¤ç¤¦¡£
¤Ç¤â¡¢¤³¤ó¤Ê´¶¤¸¤Ç¤ªµ¤³Ú¤ËÂнè¤Ç¤­¤ë¤È»×¤ï¤ì¤Þ¤¹¡Ê¡¦¦Ø¡¦¡Ë¡£

º£²ó¤ÎÎã¤ÇÄɲä·¤¿ xilinx .ucf ¥ê¡¼¥À ¤¬´Þ¤Þ¤ì¤¿¥×¥í¥¸¥§¥¯¥È°ì¼°¤Ï¡¢ ¤³¤Á¤é¤Î¥¨¥ó¥È¥ê¤«¤éÍî¤È¤»¤Þ¤¹¡£

posted at: 14:09 | permanent link