ฉันอ่านที่รหัส VHDL ที่ไม่ดีสามารถนำไปสู่ความเสียหาย FPGA
เป็นไปได้ไหมที่จะสร้างความเสียหายให้กับ FPGA ด้วยรหัส VHDL? เงื่อนไขแบบใดที่จะทำให้เกิดสิ่งนี้และสถานการณ์กรณีที่เลวร้ายที่สุดคืออะไร
ฉันอ่านที่รหัส VHDL ที่ไม่ดีสามารถนำไปสู่ความเสียหาย FPGA
เป็นไปได้ไหมที่จะสร้างความเสียหายให้กับ FPGA ด้วยรหัส VHDL? เงื่อนไขแบบใดที่จะทำให้เกิดสิ่งนี้และสถานการณ์กรณีที่เลวร้ายที่สุดคืออะไร
คำตอบ:
การเพิ่มคำตอบของ @ Anonymous มีการออกแบบที่คุณสามารถสร้างซึ่งสามารถสร้างความเสียหายให้กับโครงสร้างของ FPGA ได้
สำหรับผู้เริ่มต้นหากคุณสร้างการออกแบบที่มีขนาดใหญ่มากประกอบด้วยการลงทะเบียนจำนวนมาก (เช่น 70% ของ FPGA) ทั้งหมดที่มีสัญญาณนาฬิกาใกล้กับความถี่สูงสุดของ FPGA มันเป็นไปได้ที่จะให้ความร้อนซิลิคอนอย่างมาก หากไม่มีการระบายความร้อนที่เพียงพออาจทำให้เกิดความเสียหายทางกายภาพได้ เราสูญเสีย FPGA $ 13k เพราะมันร้อนเกินไปเนื่องจาก dev-kit มีระบบระบายความร้อนที่แย่มาก
อีกกรณีที่ง่ายกว่าสามารถวนซ้ำ combinational ตัวอย่างเช่นถ้าคุณยกตัวอย่างสามประตูที่ไม่ถูกล่ามโซ่ไว้ด้วยกันในวงแหวนและปิดหรือเพิกเฉยต่อคำเตือนสังเคราะห์เกี่ยวกับโครงสร้างดังกล่าวคุณสามารถสร้างสิ่งที่ไม่ดีสำหรับ FPGA ในตัวอย่างนี้คุณจะสร้างออสซิลเลเตอร์หลาย GHz ซึ่งสามารถสร้างความร้อนจำนวนมากในพื้นที่ขนาดเล็กมากซึ่งอาจทำลาย ALM และตรรกะโดยรอบได้
รหัสไม่ใช่คำที่ถูกต้องในบริบทนี้ ในขณะที่ Verilog หรือ VHDL ดูเหมือนโปรแกรมโปรแกรมผลลัพธ์ของคอมไพเลอร์คือการกำหนดค่าซึ่งถูกโหลดลงในชิป FPGA ที่สร้างวงจรอิเล็กทรอนิกส์ภายใน
ฉันนึกถึงสองประเภท:
การกำหนดบล็อกของอินพุตพินผิดเนื่องจากเอาท์พุทอาจทำได้หากมีสิ่งใดที่ทำให้พวกมันแข็งพอ
ฉันไม่รู้ว่าการกำหนดค่าพินสำหรับ LVDS หรือหนึ่งในมาตรฐาน LVCMOS ในขณะที่ธนาคาร IO ใช้พลังงานจากแรงดันไฟฟ้าสูงเกินไป (พลังงาน 3.3V ที่มีมาตรฐาน 1.8V IO หรือตรงกันข้ามกับอินพุต) มัน?
เห็นได้ชัดว่าปัญหาเรื่องความร้อนอาจเป็นไปได้โดยการทำอะไรที่โง่ ๆ
FPGA สามารถกำหนดค่าใหม่ได้ในขณะทำงานด้วย bitstream (บางส่วน) ใหม่ โดยปกติแล้วสตรีมนี้จะโหลดจากแหล่งภายนอก แต่คุณสามารถสร้างได้ด้วยตัวเองใน FPGA (เช่น CPU softcore แบบฝัง) การใช้โซลูชันดังกล่าวเช่นการย้ายการออกแบบย่อยแบบไดนามิกไม่ได้ให้การตรวจสอบความสอดคล้องทั้งหมดตามที่ทำโดยเครื่องมือของผู้ขาย ดังนั้นหากอัลกอริทึมของคุณเสียคุณอาจเปิดใช้งานทรานซิสเตอร์เส้นทางเท็จใน FPGA และเบิร์นได้
คุณสามารถเลือกโหมดการทำงานที่ผิดพลาดสำหรับดั้งเดิมของ FPGA เช่น PLL หรือตัวรับส่งสัญญาณ
การกำหนดค่าใหม่แบบไดนามิกเป็นเหมือนรหัสการแก้ไขด้วยตนเองในซอฟต์แวร์